Data Management Report Transformative Change Assessment Corpus - SOD

Author
Affiliation

Rainer M. Krug

Published

April 19, 2024

Doi
Abstract

The literature search for the assessment corpus was conducted using search terms provided by the experts and refined in co-operation with the Knowldge and Data task force. The search was conducted using OpenAlex, scripted from R to use the API. Search terms for the following searches were defined: Transformative Change, Nature / Environment and additional search terms for individual chapters and sub-chapters To assess the quality of the corpus, sets of key-papers were selected by the experts to verify if these are in the corpus. These key-papers were selected per chapter / sub-chapter to ensure that the corpus is representative of each chapter.

Keywords

DMR, TCA, Assessment Corpus

DOI GitHub release GitHub commits since latest release License: CC BY 4.0

Working Title

IPBES_TCA_Corpus

Code repo

Github repository

Build No: 527

Introduction

The following terminology is used in this document:

  • Individual corpus: The corpus resulting from one search term, e.g. transformative or nature or ChX_Y
  • Assessment Corpus: The corpus resulting from the search terms transformative AND nature
  • Chapter corpus: The corpus resulting from transformative AND Nature AND ChX_Y

The following searches are conducted on Title and Abstrat only as the availability of fulltext drops in 2020. OpenAlex did “inherit” fro Microsoft Academic their initial corpus in 2021 which contained a lot of fulltext for searches. After that time, other sources had to be used which did not include fulltext for searches. To eliminate this bias, we linit the search for terms in abstract and title only.

Schematic Overview

TODO

Search Terms

Here are the search terms used in this document. They were provided by the authors, and some adaptations were done by the tsu to adopt them for OpenAlex.

Transformative Change

Show the code
cat(params$s_1_transformative_change)
(
    (
        (
            transformation
            OR transition
            OR transformative
            OR "transformative change"
        )
        OR (
            (
                shift
                OR change
            )
            AND (
                fundamental
                OR deep
                OR radical
            )
        )
    )
    AND (
        socio
        OR social
        OR politics
        OR political
        OR governance
        OR economic
        OR cultural
        OR system
        OR technological
        OR inner
        OR personal
        OR financial
        OR business
    )
)
OR (
    (
        "transformative change"
        OR "deliberate transformation"
        OR "transformative turn"
        OR transition
        OR "social-ecological change"
        OR "deep change"
        OR "fundamental alteration"
        OR "profound change"
        OR "profound transformation"
        OR "radical transformation"
        OR "transformational change"
        OR "complete change"
        OR "complete transformation"
        OR "drastic change"
        OR "in-depth transformation"
        OR "progressive change"
        OR "radical alteration"
        OR "radical change"
        OR "revolutionary change"
        OR "significant modification"
        OR "total transformation"
        OR transition
        OR pathway
        OR power
        OR agency
        OR scale
        OR leverage
        OR context
        OR process
        OR regime
        OR shift
        OR views
        OR value
        OR structure
        OR institution
        OR deliberate
        OR structural
        OR fundamental
        OR system
        OR deep
        OR radical
        OR profound
        OR drastic
        OR widespread
        OR political
        OR economical
        OR structur
        OR complete
        OR progressive
        OR revolutionary
        OR substantial
        OR significant
    )
    AND (
        transformation
        OR alteration
        OR change
        OR turn
        OR action
        OR transition
        OR shift
    )
)

Nature

Show the code
#|

cat(params$s_1_nature_environment)
biodiversity
OR marine
OR terrestrial
OR forest
OR woodland
OR grassland
OR savanna
OR shrubland
OR peatland
OR ecosystem
OR lake
OR river
OR sea
OR ocean
OR meadow
OR heathland
OR mires
OR bog
OR tundra
OR biosphere
OR desert
OR mountain
OR "natural resource"
OR estuary
OR fjord
OR fauna
OR flora
OR soil
OR "coastal waters"
OR wetland
OR freshwater
OR marshland
OR marches
OR dryland
OR seascape
OR landscape
OR coast
OR "arable land"
OR "agricultural land"
OR "natural environment"
OR "environmental resource"
OR agroforest
OR "agro-forest"
OR plantation
OR "protected areas"
OR chaparral
OR sustainable
OR environment
OR conservation
OR ecosystem
OR nature
OR planet
OR Earth
OR biosphere
OR ecological
OR "socio-ecological"
OR restoration
OR wildlife
OR landscape
OR species
OR bioeconomy
OR "resource system"
OR "coupled system"
OR nature

Assessment Corpus

Show the code
#|

cat(params$s_1_tca_corpus)
( biodiversity
OR marine
OR terrestrial
OR forest
OR woodland
OR grassland
OR savanna
OR shrubland
OR peatland
OR ecosystem
OR lake
OR river
OR sea
OR ocean
OR meadow
OR heathland
OR mires
OR bog
OR tundra
OR biosphere
OR desert
OR mountain
OR "natural resource"
OR estuary
OR fjord
OR fauna
OR flora
OR soil
OR "coastal waters"
OR wetland
OR freshwater
OR marshland
OR marches
OR dryland
OR seascape
OR landscape
OR coast
OR "arable land"
OR "agricultural land"
OR "natural environment"
OR "environmental resource"
OR agroforest
OR "agro-forest"
OR plantation
OR "protected areas"
OR chaparral
OR sustainable
OR environment
OR conservation
OR ecosystem
OR nature
OR planet
OR Earth
OR biosphere
OR ecological
OR "socio-ecological"
OR restoration
OR wildlife
OR landscape
OR species
OR bioeconomy
OR "resource system"
OR "coupled system"
OR nature ) 
AND 
( (
    (
        (
            transformation
            OR transition
            OR transformative
            OR "transformative change"
        )
        OR (
            (
                shift
                OR change
            )
            AND (
                fundamental
                OR deep
                OR radical
            )
        )
    )
    AND (
        socio
        OR social
        OR politics
        OR political
        OR governance
        OR economic
        OR cultural
        OR system
        OR technological
        OR inner
        OR personal
        OR financial
        OR business
    )
)
OR (
    (
        "transformative change"
        OR "deliberate transformation"
        OR "transformative turn"
        OR transition
        OR "social-ecological change"
        OR "deep change"
        OR "fundamental alteration"
        OR "profound change"
        OR "profound transformation"
        OR "radical transformation"
        OR "transformational change"
        OR "complete change"
        OR "complete transformation"
        OR "drastic change"
        OR "in-depth transformation"
        OR "progressive change"
        OR "radical alteration"
        OR "radical change"
        OR "revolutionary change"
        OR "significant modification"
        OR "total transformation"
        OR transition
        OR pathway
        OR power
        OR agency
        OR scale
        OR leverage
        OR context
        OR process
        OR regime
        OR shift
        OR views
        OR value
        OR structure
        OR institution
        OR deliberate
        OR structural
        OR fundamental
        OR system
        OR deep
        OR radical
        OR profound
        OR drastic
        OR widespread
        OR political
        OR economical
        OR structur
        OR complete
        OR progressive
        OR revolutionary
        OR substantial
        OR significant
    )
    AND (
        transformation
        OR alteration
        OR change
        OR turn
        OR action
        OR transition
        OR shift
    )
) )

Chapter 1

01

Show the code
#|

cat(params$s_1_ch1_01)
(
    root
    OR underlying
    OR indirect
)
AND (
    driver
    OR cause
)

02

Show the code
#|

cat(params$s_1_ch1_02)
equity
OR inequity
OR just
OR unjust
OR inequality
OR equality
OR Fair
OR unfair

03

Show the code
#|

cat(params$s_1_ch1_03)
scale
OR impact
OR leapfrog
OR transfer

04

Show the code
#|

cat(params$s_1_ch1_04)
inclusive
OR participation
OR participatory
OR engagement
OR democratic
OR coproduct
OR transdisc
OR multiactor
OR "multi-actor"
OR integrat

05

Show the code
#|

cat(params$s_1_ch1_05)
evaluate
OR reflex
OR reflect
OR monitor
OR adapt
OR learn

06

Show the code
#|

cat(params$s_1_ch1_06)
responsib
OR accountable
OR rights
OR steward
OR reciprocity
OR interdependent
OR interdependency
OR (
    relation
    OR relational
    OR plural
    OR diverse
    OR "sustainability-aligned"
    OR (
        care
        AND (
            value
            OR ethic
        )
    )
)

Chapter 2

Show the code
#|

cat(params$s_1_ch2)
vision
OR future
OR visionary
OR scenarios
OR imagination
OR imagery
OR creativity
OR desire
OR wish
OR visioning
OR process
OR "participaory process"
OR "deliberate process"
OR polics
OR target
OR view
OR value
OR cosmovision
OR cosmocentric
OR dream
OR fiction
OR hope
OR mission
OR objective
OR story
OR worldview
OR aspiration
OR action
OR plan
OR strategy
OR intention
OR model
OR solution
OR innovation
OR perspective
OR platform
OR collective action
OR cooperation
OR consultation
OR coalition
OR response
OR movement
OR effort
OR initiative
OR activity
OR reaction
OR performance
OR operation
OR effect
OR task
OR project
OR influence
OR moment
OR discourse
OR motivation
OR iteration
OR roadmap
OR agenda
OR project
OR programm
OR government
OR technique
OR inspiration
OR culture
OR universe
OR reality
OR fantasy
OR perception
OR visualization
OR approach
OR image
OR arquetype
OR existence
OR cosmology
OR co - production
OR knowledge
OR dialogue
OR transmission
OR conceptual
OR ceremony
OR relationships
OR respect
OR reciprocity
OR responsibilities
OR solidarity
OR harmony
OR self - determination
OR community
OR spiritual
OR languague
OR territory
OR opportunity
OR sight
OR foresight
OR idea
OR appearance

Chapter 3

01

Show the code
#|

cat(params$s_1_ch3_01)
Technology
OR Science
OR "science-society"
OR "science-technology"
OR Solution

02

Show the code
#|

cat(params$s_1_ch3_02)
"co-create"
OR "co-creation"
OR solution
OR knowledge
OR system
OR "t-lab"
OR "technology laboratory"
OR education
OR "socio-technical"

03

Show the code
#|

cat(params$s_1_ch3_03)
System
OR pathways
OR connect
OR Agroecolog
OR Institutional
OR Institution
OR Government

04

Show the code
#|

cat(params$s_1_ch3_04)
inner
OR Personal
OR Religion
OR Love
OR Loving
OR Feelings
OR Stewardship
OR Care
OR Beliefs
OR Belief
OR believe
OR Awareness
OR "Self-Awareness"

05

Show the code
#|

cat(params$s_1_ch3_05)
Worldviews
OR Grassroot
OR "Community-based"
OR Indigenous
OR Leadership
OR "Critical Science"
OR Econfeminism
OR "Political Ecology"
OR Power
OR Agency
OR Environment

06

Show the code
#|

cat(params$s_1_ch3_06)
Economic
OR "Political Economy"
OR institution
OR govern
OR economy
OR governance
OR government
OR globalization
OR states
OR colonial
OR colonialiasism
OR labour
OR organization
OR organisation

Chapter 4

01

Show the code
#|

cat(params$s_1_ch4_01)
(
    challenge
    OR barrier
    OR obstacle
    OR hinder
    OR hindrance
    OR block
    OR prevent
    OR deter
    OR inertia
    OR "path dependence"
    OR "path dependency"
    OR stasis
    OR "lock-in"
    OR trap
    OR habits
    OR habitual
    OR "status quo"
    OR power
    OR "limiting factOR"
)
AND (
    economic inequality
    OR "Wealth concentration"
    OR "Socioeconomic inequality"
    OR financialization
    OR "uneven development"
    OR Financialization
    OR "Structural adjustment"
    OR "Sovereign Debt"
    OR inequality
    OR "Policy effectiveness"
)

02

Show the code
#|

cat(params$s_1_ch4_02)
(
    challenge
    OR barrier
    OR obstacle
    OR hinder
    OR hindrance
    OR block
    OR prevent
    OR deter
    OR inertia
    OR "path dependence"
    OR "path dependency"
    OR stasis
    OR "lock-in"
    OR trap
    OR habits
    OR habitual
    OR status quo
    OR power
    OR "limiting factor"
)
AND (
    "clean technology"
    OR "clean innovation*"
    OR "sustainable innovation"
    OR "sustainable technological innovation"
)
AND (
    "limited access"
    OR "limited availability"
    OR "lack of access"
    OR "unavailability"
)

Chapter 5

Vision

Show the code
#|

cat(params$s_1_ch5_vision)

Case

Show the code
#|

cat(params$s_1_case)
data-driven OR
observational OR
statistical OR
experimental OR
real-world OR
"evidence-based" OR
factual OR
quantitative OR
qualitative OR
measure OR
research OR
analysis OR
findings OR
investigation OR
survey OR
fieldwork OR
documented OR
verifiable OR
practical OR
objective OR
"data-collection" OR
control OR
methodology OR
variable OR
inference OR
"empirical-evidence" OR
comparative OR
replication OR
interpretative OR
behavioural OR
outcome OR
dataset OR
modeling OR
contextual OR
evaluation OR
insight  OR
instance OR
case OR
sample OR
"case report" OR
example OR
"specific study" OR
"field study" OR
"exploratory study" OR
"diagnostic study" OR
"investigative study" OR
"in-depth study"

Vision & Case

Topics

OpenAlex assigns topics to each work in a hirarchical manner:

Please see here for more information and here for a complete list of all topics and their corresponding subfields, fields and domains.

Methods

Get and calculate Data from OpenAlex

These data is gathered from OpenAlex directly, not using the downloaded TCA Corpus. The data is used to assess the quality of the TCA Corpus.

Show the code
#|

fn <- file.path(".", "data", "tca_corpus", "search_term_hits.rds")
if (!file.exists(fn)) {
    s_t <- grep("s_1_", names(params), value = TRUE)
    search_term_hits <- parallel::mclapply(
        s_t,
        function(stn) {
            message("getting '", stn, "' ...")
            if (grepl("_f_", stn)) {
                search <- params[[stn]]()
            } else {
                search <- params[[stn]]
            }
            search <- compact(search)
            openalexR::oa_query(filter = list(title_and_abstract.search = search)) |>
                openalexR::oa_request(count_only = TRUE, verbose = TRUE) |>
                unlist()
        },
        mc.cores = params$mc.cores,
        mc.preschedule = FALSE
    ) |>
        do.call(what = cbind) |>
        t() |>
        as.data.frame() |>
        dplyr::mutate(page = NULL, per_page = NULL) |>
        dplyr::mutate(count = formatC(count, format = "f", big.mark = ",", digits = 0))

    rownames(search_term_hits) <- s_t |>
        gsub(pattern = "s_1_", replacement = "") |>
        gsub(pattern = "f_", replacement = "") |>
        gsub(pattern = "^ch", replacement = "Chapter ") |>
        gsub(pattern = "_", replacement = " ")

    saveRDS(search_term_hits, file = fn)
} else {
    search_term_hits <- readRDS(fn)
}
Show the code
#|

fn <- file.path(".", "data", "tca_corpus", "key_papers.rds")
if (!file.exists(fn)) {
    key_papers <- lapply(
        params$key_papers,
        function(fn) {
            message("Processing '", fn, "' ...")
            sapply(
                fn,
                function(x) {
                    read.csv(x) |>
                        select(DOI)
                }
            ) |>
                unlist()
        }
    )
    names(key_papers) <- gsub("\\.csv", "", basename(params$key_papers))

    key_papers <- list(
        Ch_1 = unlist(key_papers[grepl("Ch 1 -", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_2 = unlist(key_papers[grepl("Ch 2 -", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_3_Cl_1 = unlist(key_papers[grepl("Ch 3 - Cl1", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_3_Cl_3 = unlist(key_papers[grepl("Ch 3 - Cl3", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_3_Cl_4 = unlist(key_papers[grepl("Ch 3 - Cl4", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_3_Cl_5 = unlist(key_papers[grepl("Ch 3 - Cl5", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_3_Cl_6 = unlist(key_papers[grepl("Ch 3 - Cl6", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_3 = unlist(key_papers[grepl("Ch 3 - p", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_4_Cl_1 = unlist(key_papers[grepl("Ch 4 - Challenge 1", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_4_Cl_2 = unlist(key_papers[grepl("Ch 4 - Challenge 2", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_4_Cl_3 = unlist(key_papers[grepl("Ch 4 - Challenge 3", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_4_Cl_4 = unlist(key_papers[grepl("Ch 4 - Challenge 4", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_4_Cl_5 = unlist(key_papers[grepl("Ch 4 - Challenge 5", names(key_papers))], recursive = FALSE) |> as.vector(),
        Ch_5 = unlist(key_papers[grepl("Ch 5 -", names(key_papers))], recursive = FALSE) |> as.vector()
    )

    saveRDS(key_papers, file = fn)
} else {
    key_papers <- readRDS(fn)
}
Show the code
#|

fn_kw <- file.path(".", "data", "tca_corpus", "key_works.rds")
fn_kw_df <- file.path(".", "data", "tca_corpus", "key_works_df.rds")
if (!all(file.exists(fn_kw, fn_kw_df))) {
    key_works <- parallel::mclapply(
        key_papers,
        function(kp) {
            dois <- kp[kp != ""] |>
                unlist() |>
                tolower() |>
                unique()

            openalexR::oa_fetch(doi = dois, output = "list")
        },
        mc.cores = params$mc.cores,
        mc.preschedule = FALSE
    )

    found <- sapply(
        key_works,
        function(x) {
            length(x) > 0
        }
    )

    key_works <- key_works[found]

    print("The following key paper sets were excluded as they contained no papers in OpenAlex:\n")
    print(names(found)[!found])

    saveRDS(key_works, file = fn_kw)

    key_works_df <- lapply(
        key_works,
        oa2df,
        entity = "works"
    )

    saveRDS(key_works_df, fn_kw_df)
} else {
    key_works <- readRDS(file = fn_kw)
    key_works_df <- readRDS(fn_kw_df)
}
Show the code
#|

fn <- file.path(".", "data", "tca_corpus", "key_works_hits.rds")
if (!file.exists(fn)) {
    kws <- key_works_df
    kws$all <- key_works_df |>
        bind_rows()

    nms <- names(kws)

    key_works_hits <- pbapply::pblapply(
        nms,
        function(nm) {
            message("Getting key paper set for ", nm, " ...")
            dois <- kws[[nm]] |>
                select(doi) |>
                distinct() |>
                unlist() |>
                unique() |>
                tolower()

            s_t <- grep("s_1_", names(params), value = TRUE)
            kw_h <- parallel::mclapply(
                s_t,
                function(stn) {
                    message("  getting '", stn, "' ...")
                    if (grepl("_f_", stn)) {
                        search <- compact(params[[stn]]())
                    } else {
                        search <- compact(params[[stn]])
                    }
                    get_count(dois = dois, list(title_and_abstract.search = search), verbose = FALSE)
                },
                mc.cores = params$mc.cores,
                mc.preschedule = FALSE
            ) |>
                do.call(what = cbind) |>
                as.data.frame()
            message("Done")

            names(kw_h) <- s_t

            # if (ncol(kw_h) == 1){
            #     kw_h <- t(kw_h)
            #     rownames(kw_h) <- dois
            # }

            kw_h <- rbind(
                kw_h,
                colSums(kw_h)
            )

            rownames(kw_h)[[nrow(kw_h)]] <- "Total"
            return(kw_h)
        }
    )

    names(key_works_hits) <- nms

    for (i in nms) {
        # key_works_hits[[i]] <- cbind(
        #     key_works_hits[[i]],
        #     key_works_hits_tca_filtered[[i]]
        # )

        key_works_hits[[i]] <- cbind(
            key_works_hits[[i]],
            Total = rowSums(key_works_hits[[i]])
        ) |>
            mutate(Total = Total - 1) # |>
        # relocate(tca_corpus_SDG, .after = s_1_tca_corpus)
    }

    ###

    saveRDS(key_works_hits, file = fn)
} else {
    key_works_hits <- readRDS(file = fn)
}

Works over Time

Get works over time for different search terms

Show the code
#|

fn <- file.path(".", "data", "tca_corpus", "oa_count.rds")
if (!file.exists(fn)) {
    oa_count <- list(
        timestamp = Sys.time()
    )
    #
    message("OpenAlex ...")
    oa_count$oa_years <- openalexR::oa_fetch(
        entity = "works",
        search = "",
        group_by = "publication_year",
        output = "dataframe",
        verbose = TRUE
    ) |>
        dplyr::mutate(
            publication_year = as.integer(as.character(key_display_name)),
            key = NULL,
            key_display_name = NULL,
            p = count / sum(count)
        ) |>
        dplyr::arrange(publication_year) |>
        dplyr::mutate(
            p_cum = cumsum(p)
        ) |>
        dplyr::select(
            publication_year,
            everything()
        )
    #
    message("NATURE ...")
    oa_count$tca_nature <- openalexR::oa_fetch(
        title_and_abstract.search = compact(paste0("(", params$s_1_nature_environment, ")")),
        group_by = "publication_year",
        output = "dataframe",
        verbose = TRUE
    ) |>
        dplyr::mutate(
            publication_year = as.integer(as.character(key_display_name)),
            key = NULL,
            key_display_name = NULL,
            p = count / sum(count)
        ) |>
        dplyr::arrange(publication_year) |>
        dplyr::mutate(
            p_cum = cumsum(p)
        ) |>
        dplyr::select(
            publication_year,
            everything()
        )
    #
    message("TransformatveChange ...")
    oa_count$transformative_change_years <- openalexR::oa_fetch(
        title_and_abstract.search = compact(paste0("(", params$s_1_transformative_change, ")")),
        group_by = "publication_year",
        output = "dataframe",
        verbose = TRUE
    ) |>
        dplyr::mutate(
            publication_year = as.integer(as.character(key_display_name)),
            key = NULL,
            key_display_name = NULL,
            p = count / sum(count)
        ) |>
        dplyr::arrange(publication_year) |>
        dplyr::mutate(
            p_cum = cumsum(p)
        ) |>
        dplyr::select(
            publication_year,
            everything()
        )
    #
    message("TCA ...")
    oa_count$tca_years <- openalexR::oa_fetch(
        title_and_abstract.search = compact(paste0("(", params$s_1_tca_corpus, ")")),
        group_by = "publication_year",
        output = "dataframe",
        verbose = TRUE
    ) |>
        dplyr::mutate(
            publication_year = as.integer(as.character(key_display_name)),
            key = NULL,
            key_display_name = NULL,
            p = count / sum(count)
        ) |>
        dplyr::arrange(publication_year) |>
        dplyr::mutate(
            p_cum = cumsum(p)
        ) |>
        dplyr::select(
            publication_year,
            everything()
        )
    #
    message("CASE ...")
    oa_count$case_years <- openalexR::oa_fetch(
        title_and_abstract.search = compact(paste0("(", params$s_1_case, ")")),
        group_by = "publication_year",
        output = "dataframe",
        verbose = TRUE
    ) |>
        dplyr::mutate(
            publication_year = as.integer(as.character(key_display_name)),
            key = NULL,
            key_display_name = NULL,
            p = count / sum(count)
        ) |>
        dplyr::arrange(publication_year) |>
        dplyr::mutate(
            p_cum = cumsum(p)
        ) |>
        dplyr::select(
            publication_year,
            everything()
        )
    #
    message("TCA AND CASE ...")
    oa_count$tca_case_years <- openalexR::oa_fetch(
        title_and_abstract.search = compact(paste0("(", params$s_1_tca_corpus, ") AND (", params$s_1_case, ")")),
        group_by = "publication_year",
        output = "dataframe",
        verbose = TRUE
    ) |>
        dplyr::mutate(
            publication_year = as.integer(as.character(key_display_name)),
            key = NULL,
            key_display_name = NULL,
            p = count / sum(count)
        ) |>
        dplyr::arrange(publication_year) |>
        dplyr::mutate(
            p_cum = cumsum(p)
        ) |>
        dplyr::select(
            publication_year,
            everything()
        )
    saveRDS(oa_count, file = fn)
}

Download TCA Corpus

The corpus download will be stored in data/pages and the arrow database in data/corpus.

This is not on github!

The corpus can be read by running get_corpus() which o[pens the database so that then it can be fed into a dplyr pipeline. After most dplyr functions, the actual data needs to be collected via collect().

Only then is the actual data read!

Needs to be enabled by setting eval: true in the code block below.

Show the code
#|

tic()

IPBES.R::corpus_download(
    pages_dir = params$pages_dir,
    title_and_abstract_search = compact(params$s_1_tca_corpus),
    continue = TRUE,
    delete_pages_dir = FALSE,
    set_size = 2000,
    dry_run = FALSE,
    verbose = TRUE,
    mc_cores = 6
)

toc()
Show the code
tic()

IPBES.R::corpus_pages_to_arrow(
    pages_dir = params$pages_dir,
    arrow_dir = params$corpus_dir,
    continue = TRUE,
    delete_arrow_dir = FALSE,
    dry_run = FALSE,
    verbose = TRUE,
    mc_cores = 2
)

toc()
Show the code
#|

years <- IPBES.R::corpus_read(params$corpus_dir) |>
    distinct(publication_year) |>
    collect() |>
    unlist() |>
    as.vector() |>
    sort()

lapply(
    years,
    function(y) {
        message("\nProcessing year: ", y)
        tic()
        dataset <- IPBES.R::corpus_read(params$corpus_dir) |>
            dplyr::filter(publication_year == y) |>
            dplyr::collect() |>
            group_by(id) |>
            slice_max(
                publication_year,
                n = 1,
                with_ties = FALSE,
                na_rm = TRUE
            )
        unlink(
            file.path(params$corpus_dir, paste0("publication_year=", y)),
            recursive = TRUE,
            force = TRUE
        )
        arrow::write_dataset(
            dataset = dataset,
            path = params$corpus_dir,
            partitioning = c("publication_year", "set"),
            format = "parquet",
            existing_data_behavior = "overwrite"
        )
        toc()
    }
)

Download TCA AND CASE Corpus

Show the code
#|

tic()

IPBES.R::corpus_download(
    pages_dir = params$pages_cases_dir,
    title_and_abstract_search = compact(paste(params$s_1_tca_corpus, " AND (", params$s_1_case, ")")),
    continue = TRUE,
    delete_pages_dir = FALSE,
    set_size = 2000,
    dry_run = TRUE,
    verbose = TRUE,
    mc_cores = 6
)

toc()
Show the code
tic()

IPBES.R::corpus_pages_to_arrow(
    pages_dir = params$pages_cases_dir,
    arrow_dir = params$corpus_cases_dir,
    continue = TRUE,
    delete_arrow_dir = FALSE,
    dry_run = FALSE,
    verbose = TRUE,
    mc_cores = 2
)

toc()
Show the code
#|

years <- IPBES.R::corpus_read(params$corpus_cases_dir) |>
    distinct(publication_year) |>
    collect() |>
    unlist() |>
    as.vector() |>
    sort()

lapply(
    years,
    function(y) {
        message("\nProcessing year: ", y)
        tic()
        dataset <- IPBES.R::corpus_read(params$corpus_cases_dir) |>
            dplyr::filter(publication_year == y) |>
            dplyr::collect() |>
            group_by(id) |>
            slice_max(
                publication_year,
                n = 1,
                with_ties = FALSE,
                na_rm = TRUE
            )
        unlink(
            file.path(params$corpus_cases_dir, paste0("publication_year=", y)),
            recursive = TRUE,
            force = TRUE
        )
        arrow::write_dataset(
            dataset = dataset,
            path = params$corpus_cases_dir,
            partitioning = c("publication_year", "set"),
            format = "parquet",
            existing_data_behavior = "overwrite"
        )
        toc()
    }
)

Prepare Full Text search of Title and Abstract

This is done using duckDB and the fts extension which is a full text search extension for duckDB (see also for details and for arrow / parquet support).

The following steps are conducted:

  1. Create new duckDB called tca_corpus.duckdb
    • import data needed
    • create fts index for full text search
Show the code
if (!file.exists(params$duckdb_fn)) {
    sql <- paste0(
        "CREATE TABLE tca_corpus AS SELECT id, author_abbr, publication_year, doi, display_name, ab FROM parquet_scan('",
        file.path(".", "data", "tca_corpus", "corpus", "**", "*.parquet"),
        "')"
    )

    con <- duckdb::dbConnect(duckdb::duckdb(), dbdir = params$duckdb_fn, read_only = FALSE)
    #
    dbExecute(con, "SET autoinstall_known_extensions=1")
    dbExecute(con, "SET autoload_known_extensions=1")
    dbExecute(con, sql)
    #
    duckdb::dbDisconnect(con, shutdown = TRUE)

    con <- duckdb::dbConnect(duckdb::duckdb(), dbdir = params$duckdb_fn, read_only = FALSE)
    #
    dbExecute(con, "INSTALL fts")
    dbExecute(con, "LOAD fts")

    input_table <- "tca_corpus"
    input_id <- "id"
    input_values <- "'display_name', 'ab'"

    sql <- paste0("PRAGMA create_fts_index(", input_table, ", ", input_id, ", ", input_values, ", overwrite=1);")

    dbExecute(con, sql)
    #
    duckdb::dbDisconnect(con, shutdown = TRUE)
}

# con <- dbConnect(duckdb::duckdb(params$duckdb_fn))

# SQL <- "SELECT * FROM tca_corpus WHERE display_name MATCH 'transformative';"
# dbListTables(con)

#     input_table <- "tca_corpus"
#     input_id <- "id"
#     input_values <- "'display_name', 'ab'"

#     query_string <- "'case study'"
#     fields <- "'display_name', 'ab'"

# sql <- paste0("SELECT fts_main_tca_corpus.match_bm25(", input_id, ", ", query_string, ", fields = ", fields, " FROM tca_corpus)"

# dbExecute(con, sql)

# duckdb::dbDisconnect(con, shutdown = TRUE)

Extract Data from Global Corpus

Export Random Works from TCA Cases Corpus

Show the code
#|

sample_size <- 250

fn <- file.path("data", "tca_corpus", paste0("random_", sample_size, "_tca_cases_corpus.xlsx"))
if (!file.exists(fn)) {
    set.seed(13)
    read_corpus(params$corpus_cases_dir) |>
        dplyr::select(
            id,
            doi,
            author = author_abbr,
            title = display_name,
            abstract = ab
        ) |>
        dplyr::slice_sample(
            n = sample_size
        ) |>
        dplyr::mutate(
            abstract = substr(abstract, 1, 5000)
        ) |>
        dplyr::collect() |>
        writexl::write_xlsx(path = fn)
}

Sectors

The Sectors definition is based on the subfields assigned to each work by OpenAlex. These were grouped by experts into sectors. See this Google Doc for details.

Show the code
#|

if (!dir.exists(params$corpus_topics_dir)) {
    con <- duckdb::dbConnect(duckdb::duckdb(), read_only = FALSE)

    corpus_read(params$corpus_dir) |>
        arrow::to_duckdb(table_name = "corpus", con = con) |>
        invisible()
    corpus_read(file.path("input", "tca_corpus", "sectors_def.parquet")) |>
        arrow::to_duckdb(table_name = "sectors", con = con) |>
        invisible()

    paste0(
        "CREATE VIEW corpus_unnest AS ",
        "SELECT  ",
        "corpus.id AS work_id,  ",
        "corpus.publication_year AS publication_year,  ",
        "UNNEST(topics).i AS i,  ",
        "UNNEST(topics).score AS score,  ",
        "UNNEST(topics).name AS name, ",
        "UNNEST(topics).id AS id,  ",
        "UNNEST(topics).display_name AS display_name  ",
        "FROM  ",
        "corpus "
    ) |>
        dbExecute(conn = con)

    select_sql <- paste0(
        "SELECT ",
        "corpus_unnest.*, ",
        "sectors.sector ",
        "FROM ",
        "corpus_unnest ",
        "LEFT JOIN ",
        "sectors ",
        "ON ",
        "corpus_unnest.id  == sectors.id "
    )

    dbGetQuery(con, paste(select_sql, "LIMIT 10"))

    sql <- paste0(
        "COPY ( ",
        select_sql,
        ") TO '", params$corpus_topics_dir, "' ",
        "(FORMAT PARQUET, COMPRESSION 'SNAPPY', PARTITION_BY 'publication_year')"
    )

    dbExecute(con, sql)

    duckdb::dbDisconnect(con, shutdown = TRUE)

    ###########################

    # years <- IPBES.R::corpus_read(params$corpus_dir) |>
    #     distinct(publication_year) |>
    #     collect() |>
    #     unlist() |>
    #     as.vector() |>
    #     sort()

    # sectors <- read.csv(file.path("input", "tca_corpus", "sectors_def.csv")) |>
    #     tibble::as_tibble() |>
    #     dplyr::mutate(
    #         id = paste0("https://openalex.org/subfields/", id),
    #         display_name = NULL
    #     )

    # pbmcapply::pbmclapply(
    #     years,
    #     function(y) {
    #         message("\nProcessing year: ", y)
    #         IPBES.R::corpus_read(params$corpus_dir) |>
    #             dplyr::filter(publication_year == y) |>
    #             dplyr::select(
    #                 id,
    #                 publication_year,
    #                 topics
    #             ) |>
    #             collect() |>
    #             IPBES.R::extract_topics(
    #                 names = "subfield"
    #             ) |>
    #             dplyr::left_join(
    #                 y = sectors,
    #                 by = "id"
    #             ) |>
    #             arrow::write_dataset(
    #                 path = params$corpus_topics_dir,
    #                 partitioning = c("publication_year"),
    #                 format = "parquet",
    #                 existing_data_behavior = "overwrite"
    #             )
    #     },
    #     mc.cores = 3,
    #     mc.preschedule = FALSE
    # )
}

Authors

Show the code
#|

if (!dir.exists(params$corpus_authors_dir)) {
    con <- duckdb::dbConnect(duckdb::duckdb(), read_only = FALSE)

    corpus_read(params$corpus_dir) |>
        arrow::to_duckdb(table_name = "corpus", con = con) |>
        invisible()

    paste0(
        "CREATE VIEW corpus_unnest AS ",
        "SELECT  ",
        "corpus.id AS work_id,  ",
        "corpus.publication_year AS publication_year,  ",
        "UNNEST(author).au_id AS au_id,  ",
        "UNNEST(author).au_display_name AS au_display_name, ",
        "UNNEST(author).au_orcid AS au_orcid,  ",
        "UNNEST(author).author_position AS author_position,  ",
        "UNNEST(author).is_corresponding AS is_corresponding,  ",
        "UNNEST(author).au_affiliation_raw AS au_affiliation_raw,  ",
        "UNNEST(author).institution_id AS institution_id,  ",
        "UNNEST(author).institution_display_name AS institution_display_name,  ",
        "UNNEST(author).institution_ror AS institution_ror,  ",
        "UNNEST(author).institution_country_code AS institution_country_code,  ",
        "UNNEST(author).institution_type AS institution_type,  ",
        "UNNEST(author).institution_lineage AS institution_lineage  ",
        "FROM  ",
        "corpus "
    ) |> dbExecute(conn = con)

    paste0(
        "COPY ( ",
        "SELECT * FROM corpus_unnest ",
        ") TO '", params$corpus_authors_dir, "' ",
        "(FORMAT PARQUET, COMPRESSION 'SNAPPY', PARTITION_BY 'publication_year')"
    ) |>
        dbExecute(conn = con)

    duckdb::dbDisconnect(con, shutdown = TRUE)
}

Primary Topics

Show the code
fn <- file.path(".", "data", "tca_corpus", paste0("prim_topics_tca_corpus.rds"))
if (!file.exists(fn)) {
    prim_topics_tca_corpus <- corpus_read(params$corpus_topics_dir) |>
        dplyr::filter(
            name == "topic",
            i == 1
        ) |>
        mutate(
            id = as.integer(sub("https://openalex.org/T", "", id))
        ) |>
        dplyr::group_by(id) |>
        summarize(
            count = n()
        ) |>
        dplyr::left_join(
            read.csv(file.path("input", "tca_corpus", "OpenAlex_topic_mapping_table - final_topic_field_subfield_table.csv")),
            by = c("id" = "topic_id")
        ) |>
        dplyr::arrange(desc(count)) |>
        collect()

    saveRDS(prim_topics_tca_corpus, file = fn)
} else {
    prim_topics_tca_corpus <- readRDS(fn)
}

Figures

Show the code
#|

fn <- file.path(".", "data", "tca_corpus", "publications_over_time_tca_corpus.rds")

if (!file.exists(fn)) {
    read_corpus(params$corpus_dir) |>
        dplyr::select(publication_year) |>
        dplyr::arrange(publication_year) |>
        dplyr::collect() |>
        table() |>
        as.data.frame() |>
        mutate(
            publication_year = as.integer(as.character(publication_year)),
            p = Freq / sum(Freq),
            p_cum = cumsum(p)
        ) |>
        rename(
            count = Freq
        ) |>
        dplyr::inner_join(
            y = openalexR::oa_fetch(
                search = "",
                group_by = "publication_year",
                output = "tibble",
                verbose = FALSE
            ) |>
                dplyr::select(
                    key,
                    count
                ) |>
                dplyr::rename(
                    publication_year = key,
                    count_oa = count
                ) |>
                dplyr::arrange(publication_year) |>
                dplyr::mutate(
                    publication_year = as.integer(as.character(publication_year)),
                    p_oa = count_oa / sum(count_oa),
                    p_oa_cum = cumsum(p_oa)
                )
        ) |>
        saveRDS(file = fn)
}
Show the code
#|

if (length(list.files(file.path("figures", "tca_corpus"), pattern = "publications_over_time")) < 2) {
    figure <- readRDS(file.path(".", "data", "tca_corpus", "publications_over_time_tca_corpus.rds")) |>
        dplyr::filter(publication_year >= 1900) |>
        ggplot() +
        geom_bar(aes(x = publication_year, y = p), stat = "identity") +
        geom_line(aes(x = publication_year, y = p_cum / 10), color = "red") +
        geom_line(aes(x = publication_year, y = p_oa_cum / 10), color = "blue") +
        scale_x_continuous(breaks = seq(1900, 2020, 10)) +
        scale_y_continuous(
            "Proportion of publications",
            sec.axis = sec_axis(~ . * 10, name = "Cumulative proportion") # divide by 100 to scale back the secondary axis
        ) +
        labs(
            title = "Publications over time",
            x = "Year",
            y = "Number of publications"
        ) +
        theme_minimal() +
        theme(axis.text.y.right = element_text(color = "red"))

    ggplot2::ggsave(
        file.path("figures", "tca_corpus", "publications_over_time.pdf"),
        width = 12,
        height = 6,
        figure
    )
    ggplot2::ggsave(
        file.path("figures", "tca_corpus", "publications_over_time.png"),
        width = 12,
        height = 6,
        figure
    )

    rm(figure)
}

Maps

Show the code
#|

fn <- file.path(".", "data", "tca_corpus", "countries_tca_corpus.rds")
if (!file.exists(fn)) {
    corpus <- corpus_read(params$corpus_authors_dir)

    data_first <- corpus |>
        dplyr::filter(
            author_position == "first"
        ) |>
        dplyr::select(
            work_id,
            institution_country_code,
        ) |>
        dplyr::group_by(
            work_id,
            institution_country_code
        ) |>
        dplyr::summarise(
            count_first = 1 / n(),
            .groups = "drop"
        ) |>
        dplyr::group_by(
            institution_country_code
        ) |>
        dplyr::summarise(
            count = sum(count_first),
            .groups = "drop"
        ) |>
        dplyr::mutate(
            position = "first"
        )

    data_all <- corpus |>
        dplyr::select(
            work_id,
        ) |>
        dplyr::group_by(
            work_id,
        ) |>
        dplyr::summarize(
            count = n()
        ) |>
        dplyr::right_join(
            y = corpus |>
                dplyr::select(
                    work_id,
                    institution_country_code
                ),
            by = "work_id"
        ) |>
        dplyr::group_by(
            institution_country_code
        ) |>
        dplyr::summarise(
            count = sum(count),
            .groups = "drop"
        ) |>
        dplyr::mutate(
            position = "all"
        )

    data_oa <- openalexR::oa_fetch(
        group_by = "authorships.countries",
        output = "tibble",
        verbose = FALSE
    ) |>
        dplyr::mutate(
            iso3c = countrycode::countrycode(
                key_display_name,
                origin = "country.name",
                destination = "iso3c"
            ),
            key_display_name = NULL,
            key = NULL,
            position = "oa"
        )

    data <- dplyr::add_row(
        collect(data_first),
        collect(data_all)
    ) |>
        dplyr::mutate(
            iso3c = countrycode::countrycode(
                institution_country_code,
                origin = "iso2c",
                destination = "iso3c"
            ),
            institution_country_code = NULL
        ) |>
        dplyr::add_row(
            data_oa
        ) |>
        saveRDS(file = fn)
    rm(data_first, data_all, data_oa)
}

Some check of the data

Show the code
#|

if (length(list.files(path = file.path("maps", "tca_corpus"), pattern = "publications_countries")) < 2) {
    data <- readRDS(file.path(".", "data", "tca_corpus", "countries_tca_corpus.rds")) |>
        dplyr::group_by(iso3c) |>
        dplyr::summarize(
            count_first = sum(count[position == "first"], na.rm = TRUE),
            count_all = sum(count[position == "all"], na.rm = TRUE),
            count_oa = sum(count[position == "oa"], na.rm = TRUE)
        ) |>
        dplyr::mutate(
            count_oa = ifelse(is.na(count_oa), 0, count_oa),
            log_count_oa = log(count_oa + 1),
            p_oa = count_oa / sum(count_oa),
            #
            count_first = ifelse(is.na(count_first), 0, count_first),
            log_count_first = log(count_first + 1),
            p_first = count_first / sum(count_first),
            p_first_output = count_first / count_oa,
            p_first_diff = (p_oa - p_first) * 100,
            #
            count_all = ifelse(is.na(count_all), 0, count_all),
            log_count_all = log(count_all + 1),
            p_all = count_all / sum(count_all),
            p_all_output = count_all / count_oa,
            p_all_diff = (p_oa - p_all) * 100,
        )

    # data |> mutate(
    #     count_first = count_first / max(count_first),
    #     count_all = count_all / max(count_all),
    #     count_oa = count_oa / max(count_oa)
    # ) |>
    # dplyr::arrange(desc(count_oa)) |>
    # ggplot(aes(x = iso3c)) +
    #     geom_line(aes(y = count_first, color = "Count First"), group = 1) +
    #     geom_line(aes(y = count_all, color = "Count All"), group = 1) +
    #     geom_line(aes(y = count_oa, color = "Count OA"), group = 1) +
    #     scale_color_manual(values = c("Count First" = "red", "Count All" = "blue", "Count OA" = "green")) +
    #     labs(x = "ISO3C", y = "Normalized Count") +
    #     theme_minimal()

    map <- patchwork::wrap_plots(
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "count_oa",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("count of overall publications (count_oa)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "count_first",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("count of TCA publications (count_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "count_all",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("count of TCA publications (count_all)"),
        ####
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "log_count_oa",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("log(count + 1) of overall publications (log_count_oa)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "log_count_first",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("log(count + 1) of TCA publications (log_count_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "log_count_all",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("log(count + 1) of TCA publications (log_count_all)"),
        ####
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_oa",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("Overall research output (p_oa)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_first",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("TCA research output (p_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_all",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("TCA research output (p_all)"),
        ####
        ggplot() +
            theme_void(),
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_first_diff",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", mid = "white", high = "#56B4E9", midpoint = 0) +
            ggplot2::ggtitle("difference (TCA - overall) output (p_oa - p_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_all_diff",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", mid = "white", high = "#56B4E9", midpoint = 0) +
            ggplot2::ggtitle("difference (TCA - overall) output (p_oa - p_all)"),
        ncol = 3
    )

    ggplot2::ggsave(
        file.path("maps", "tca_corpus", "publications_countries.pdf"),
        width = 12,
        height = 8,
        map
    )
    ggplot2::ggsave(
        file.path("maps", "tca_corpus", "publications_countries.png"),
        width = 12,
        height = 8,
        map
    )
}
Show the code
if (length(list.files(path = file.path("maps", "tca_corpus"), pattern = "publications_countries_before_2016")) < 2) {
    data <- readRDS(file.path(".", "data", "tca_corpus", "countries_tca_corpus.rds")) |>
        dplyr::filter(
            publication_year < 2016
        ) |>
        dplyr::group_by(iso3c) |>
        dplyr::summarize(
            count_first = sum(as.integer(count_first), na.rm = TRUE),
            count_all = sum(as.integer(count_all), na.rm = TRUE),
            count_oa = sum(as.integer(count_oa), na.rm = TRUE),
        ) |>
        dplyr::mutate(
            count_oa = ifelse(is.na(count_oa), 0, count_oa),
            log_count_oa = log(count_oa + 1),
            p_oa = count_oa / sum(count_oa),
            #
            count_first = ifelse(is.na(count_first), 0, count_first),
            log_count_first = log(count_first + 1),
            p_first = count_first / sum(count_first),
            p_first_output = count_first / count_oa,
            p_first_diff = (p_oa - p_first) * 100,
            #
            count_all = ifelse(is.na(count_all), 0, count_all),
            log_count_all = log(count_all + 1),
            p_all = count_all / sum(count_all),
            p_all_output = count_all / count_oa,
            p_all_diff = (p_oa - p_all) * 100,
        )

    map <- patchwork::wrap_plots(
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "count_oa",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("count of overall publications (count_oa)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "count_first",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("count of TCA publications (count_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "count_all",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("count of TCA publications (count_all)"),
        ####
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "log_count_oa",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("log(count + 1) of overall publications (log_count_oa)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "log_count_first",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("log(count + 1) of TCA publications (log_count_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "log_count_all",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("log(count + 1) of TCA publications (log_count_all)"),
        ####
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_oa",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("Overall research output (p_oa)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_first",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("TCA research output (p_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_all",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("TCA research output (p_all)"),
        ####
        ggplot() +
            theme_void(),
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_first_diff",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", mid = "white", high = "#56B4E9", midpoint = 0) +
            ggplot2::ggtitle("difference (TCA - overall) output (p_oa - p_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_all_diff",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", mid = "white", high = "#56B4E9", midpoint = 0) +
            ggplot2::ggtitle("difference (TCA - overall) output (p_oa - p_all)"),
        ncol = 3
    )

    ggplot2::ggsave(
        file.path("maps", "tca_corpus", "publications_countries_before_2016.pdf"),
        width = 12,
        height = 8,
        map
    )
    ggplot2::ggsave(
        file.path("maps", "tca_corpus", "publications_countries_before_2016.png"),
        width = 12,
        height = 8,
        map
    )
}
Show the code
if (length(list.files(path = file.path("maps", "tca_corpus"), pattern = "publications_countries_after_2019")) < 2) {
    data <- readRDS(file.path(".", "data", "tca_corpus", "countries_tca_corpus.rds")) |>
        dplyr::filter(
            publication_year > 2019
        ) |>
        dplyr::group_by(iso3c) |>
        dplyr::summarize(
            count_first = sum(as.integer(count_first), na.rm = TRUE),
            count_all = sum(as.integer(count_all), na.rm = TRUE),
            count_oa = sum(as.integer(count_oa), na.rm = TRUE),
        ) |>
        dplyr::mutate(
            count_oa = ifelse(is.na(count_oa), 0, count_oa),
            log_count_oa = log(count_oa + 1),
            p_oa = count_oa / sum(count_oa),
            #
            count_first = ifelse(is.na(count_first), 0, count_first),
            log_count_first = log(count_first + 1),
            p_first = count_first / sum(count_first),
            p_first_output = count_first / count_oa,
            p_first_diff = (p_oa - p_first) * 100,
            #
            count_all = ifelse(is.na(count_all), 0, count_all),
            log_count_all = log(count_all + 1),
            p_all = count_all / sum(count_all),
            p_all_output = count_all / count_oa,
            p_all_diff = (p_oa - p_all) * 100,
        )

    map <- patchwork::wrap_plots(
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "count_oa",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("count of overall publications (count_oa)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "count_first",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("count of TCA publications (count_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "count_all",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("count of TCA publications (count_all)"),
        ####
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "log_count_oa",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("log(count + 1) of overall publications (log_count_oa)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "log_count_first",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("log(count + 1) of TCA publications (log_count_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "log_count_all",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("log(count + 1) of TCA publications (log_count_all)"),
        ####
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_oa",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("Overall research output (p_oa)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_first",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("TCA research output (p_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_all",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", high = "#56B4E9") +
            ggplot2::ggtitle("TCA research output (p_all)"),
        ####
        ggplot() +
            theme_void(),
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_first_diff",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", mid = "white", high = "#56B4E9", midpoint = 0) +
            ggplot2::ggtitle("difference (TCA - overall) output (p_oa - p_first)"),
        #
        data |>
            IPBES.R::map_country_codes(
                map_type = "countries",
                values = "p_all_diff",
                geodata_path = params$gdm_dir
            ) +
            ggplot2::scale_fill_gradient2(low = "#E69F00", mid = "white", high = "#56B4E9", midpoint = 0) +
            ggplot2::ggtitle("difference (TCA - overall) output (p_oa - p_all)"),
        ncol = 3
    )

    ggplot2::ggsave(
        file.path("maps", "tca_corpus", "publications_countries_after_2019.pdf"),
        width = 12,
        height = 8,
        map
    )
    ggplot2::ggsave(
        file.path("maps", "tca_corpus", "publications_countries_after_2019.png"),
        width = 12,
        height = 8,
        map
    )
}

Topics and Sectors

Show the code
#|

fn <- file.path("data", "tca_corpus", "sectors_over_time.rds")
if (!file.exists(fn)) {
    data <- IPBES.R::corpus_read(params$corpus_topics_dir) |>
        dplyr::filter(
            name == "subfield"
        ) |>
        dplyr::group_by(
            publication_year,
            sector,
            i
        ) |>
        dplyr::summarize(
            count = n(),
            .groups = "drop"
        ) |>
        dplyr::rename(
            level = i
        ) |>
        dplyr::collect()

    data |>
        dplyr::filter(
            level == 1
        ) |>
        dplyr::group_by(
            publication_year,
            sector
        ) |>
        dplyr::summarize(
            count_1 = sum(count),
            .groups = "drop"
        ) |>
        dplyr::full_join(
            data |>
                dplyr::group_by(
                    publication_year,
                    sector
                ) |>
                dplyr::summarize(
                    count_all = sum(count)
                )
        ) |>
        dplyr::arrange(
            publication_year,
            sector
        ) |>
        dplyr::mutate(
            count_1 = ifelse(is.na(count_1), 0, count_1),
            count_all = ifelse(is.na(count_all), 0, count_all)
        ) |>
        dplyr::group_by(sector) |>
        dplyr::mutate(
            cumsum_count_1 = cumsum(count_1),
            cumsum_count_all = cumsum(count_all),
            p_cumsum_count_1 = cumsum_count_1 / max(cumsum_count_1),
            p_cumsum_count_all = cumsum_count_all / max(cumsum_count_all)
        ) |>
        saveRDS(fn)
    rm(data)
}
Show the code
#|

if (length(list.files(file.path("figures", "tca_corpus"), pattern = "sectors_over_time")) < 2) {
    figure_1 <- readRDS(file.path(file.path("data", "tca_corpus", "sectors_over_time.rds"))) |>
        dplyr::filter(
            publication_year >= 1950
        ) |>
        ggplot() +
        geom_line(
            aes(
                x = publication_year,
                y = cumsum_count_1,
                color = sector,
                lty = sector
            )
        ) +
        scale_x_continuous(breaks = seq(1900, 2020, 10)) +
        scale_y_continuous(
            "Log(No Publications)",
            trans = "log10"
            # sec.axis = sec_axis(~ . * 10, name = "Cumulative proportion") # divide by 100 to scale back the secondary axis
        ) +
        labs(
            title = "Publications classified into Sectors over time (primary sector only)",
            x = "Year"
            # y = "Number of publications"
        ) +
        theme_minimal() +
        theme(
            legend.position = "bottom",
            # axis.text.y.right = element_text(color = "red")
        )

    figure_all <- readRDS(file.path(file.path("data", "tca_corpus", "sectors_over_time.rds"))) |>
        dplyr::filter(
            publication_year >= 1950
        ) |>
        ggplot() +
        geom_line(
            aes(
                x = publication_year,
                y = cumsum_count_all,
                color = sector,
                lty = sector
            )
        ) +
        scale_x_continuous(breaks = seq(1900, 2020, 10)) +
        scale_y_continuous(
            "Log(No Publications)",
            trans = "log10"
            # sec.axis = sec_axis(~ . * 10, name = "Cumulative proportion") # divide by 100 to scale back the secondary axis
        ) +
        labs(
            title = "Publications classified into Sectors over time (up to three sectors)",
            x = "Year"
            # y = "Number of publications"
        ) +
        theme_minimal() +
        theme(
            legend.position = "none",
            # axis.text.y.right = element_text(color = "red")
        )

    figure <- patchwork::wrap_plots(
        figure_1,
        figure_all,
        nrow = 2
    )

    ggplot2::ggsave(
        file.path("figures", "tca_corpus", "sectors_over_time.pdf"),
        width = 12,
        height = 12,
        figure
    )
    ggplot2::ggsave(
        file.path("figures", "tca_corpus", "sectors_over_time.png"),
        width = 12,
        height = 12,
        figure
    )

    rm(figure_1, figure_all, figure)
}
Show the code
#|

if (length(list.files(file.path("figures", "tca_corpus"), pattern = "sectors_proportions_over_time")) < 2) {
    figure <- readRDS(file.path(file.path("data", "tca_corpus", "sectors_over_time.rds"))) |>
        dplyr::filter(
            publication_year >= 1950
        ) |>
        group_by(publication_year) |>
        mutate(count_all = count_all / sum(count_all)) |>
        ggplot() +
        geom_col(
            aes(
                x = publication_year,
                y = count_all,
                fill = sector
            ),
            position = "stack"
        ) +
        scale_x_continuous(breaks = seq(1900, 2020, 10)) +
        scale_y_continuous(
            "Proportion of Publications" # ,
            #    limits = c(0, 1.0001)
        ) +
        labs(
            title = "Publications classified into Sectors over time. Each publication has up to three sectors assigned.",
            x = "Year",
            y = "Proportion"
        ) +
        theme_minimal() +
        theme(
            legend.position = "right"
        )

    ggplot2::ggsave(
        file.path("figures", "tca_corpus", "sectors_proportions_over_time.pdf"),
        width = 12,
        height = 12,
        figure
    )
    ggplot2::ggsave(
        file.path("figures", "tca_corpus", "sectors_proportions_over_time.png"),
        width = 12,
        height = 12,
        figure
    )

    rm(figure)
}

Results

Assessment of Search Terms Using OpenAlex

Number of Hits per Individual Corpus

Here we show the number of hits for the key papers in the different individual corpi. The columns represent the different search terms as defined in Section 2.2.

Show the code
dat <- cbind(
    search_term_hits
)

rownames(dat) <- dplyr::recode(
    rownames(dat),
    "transformative change" = "Transformative Change @sec-transform",
    "nature environment" = "Nature @sec-nature",
    "tca corpus" = "Assessment Corpus @sec-tca-corpus",
    "Chapter 1 01" = "Ch1 01 @sec-ch1-01",
    "Chapter 1 02" = "Ch1 02 @sec-ch1-02",
    "Chapter 1 03" = "Ch1 03 @sec-ch1-03",
    "Chapter 1 04" = "Ch1 04 @sec-ch1-04",
    "Chapter 1 05" = "Ch1 05 @sec-ch1-05",
    "Chapter 1 06" = "Ch1 06 @sec-ch1-06",
    "Chapter 2" = "Ch2  @sec-ch2",
    "Chapter 3 01" = "Ch3 01 @sec-ch3-01",
    "Chapter 3 02" = "Ch3 02 @sec-ch3-02",
    "Chapter 3 03" = "Ch3 03 @sec-ch3-03",
    "Chapter 3 04" = "Ch3 04 @sec-ch3-04",
    "Chapter 3 05" = "Ch3 05 @sec-ch3-05",
    "Chapter 3 06" = "Ch3 06 @sec-ch3-06",
    "Chapter 4 01" = "Ch4 01 @sec-ch4-01",
    "Chapter 4 02" = "Ch4 02 @sec-ch4-02",
    "Chapter 5 vision" = "Ch5 Vision @sec-ch5_vision",
    "Chapter 5 vision case" = "Ch5 Vision Case @sec-ch5_vision_case",
    "case" = "Ch5 Case @sec-case"
)

dat |>
    knitr::kable(
        caption = "Number of hits",
    )
Number of hits
count db_response_time_ms
oa 251,854,599 25
Transformative Change Section 2.2.1 18,727,588 4668
Nature Section 2.2.2 24,785,843 3410
Assessment Corpus Section 2.2.3 4,654,618 4733
Ch1 01 Section 2.2.4.1 631,378 370
Ch1 02 Section 2.2.4.2 3,247,616 412
Ch1 03 Section 2.2.4.3 16,268,547 430
Ch1 04 Section 2.2.4.4 2,527,600 716
Ch1 05 Section 2.2.4.5 26,129,008 746
Ch1 06 Section 2.2.4.6 6,545,182 741
Ch2 Section 2.2.5 110,353,998 6431
Ch3 01 Section 2.2.6.1 16,077,426 921
Ch3 02 Section 2.2.6.2 33,775,189 1615
Ch3 03 Section 2.2.6.3 28,999,629 964
Ch3 04 Section 2.2.6.4 10,855,161 1150
Ch3 05 Section 2.2.6.5 13,251,559 1192
Ch3 06 Section 2.2.6.6 20,962,981 943
Ch4 01 Section 2.2.7.1 889,020 1147
Ch4 02 Section 2.2.7.2 21 929
Ch5 Case Section 2.2.8.2 96,324,367 5095
Show the code
rm(dat)

Key papers in different Individual Corpi

Show the code
#|

tbl <- lapply(
    names(key_works_hits),
    function(n) {
        kwh <- key_works_hits[[n]]
        if (nrow(kwh) > 0) {
            total <- grepl("Total", rownames(kwh))
            rownames(kwh)[!total] <- paste0(n, " - <a href='https://doi.org/", rownames(kwh)[!total], "' target='_blank'>Click here</a>")
            rownames(kwh)[total] <- paste0("**", n, " - Total**")
            kwh |>
                arrange(Total) |>
                apply(
                    c(1, 2),
                    function(x) {
                        ifelse(x == 0, "<font color='red'>0</font>", paste0("<font color='green'>", x, "</font>"))
                    }
                ) |>
                as.data.frame()
        } else {
            return(NULL)
        }
    }
)
tbl <- tbl[sapply(tbl, class) != "NULL"]
tbl <- do.call(what = rbind, tbl)


detail <- rbind(
    "**overall**" = c(
        paste0(
            "**",
            search_term_hits |>
                select(count) |>
                unlist() |>
                as.vector(),
            "**"
        ),
        ""
    ),
    tbl
)

detail <- detail |>
    dplyr::rename(
        "Transformative Change @sec-transform" = s_1_transformative_change,
        "Nature @sec-nature" = s_1_nature_environment,
        "Assessment Corpus @sec-tca-corpus" = s_1_tca_corpus,
        "Ch1 01 @sec-ch1-01" = s_1_ch1_01,
        "Ch1 02 @sec-ch1-02" = s_1_ch1_02,
        "Ch1 03 @sec-ch1-03" = s_1_ch1_03,
        "Ch1 04 @sec-ch1-04" = s_1_ch1_04,
        "Ch1 05 @sec-ch1-05" = s_1_ch1_05,
        "Ch1 06 @sec-ch1-06" = s_1_ch1_06,
        "Ch2  @sec-ch2" = s_1_ch2,
        "Ch3 01 @sec-ch3-01" = s_1_ch3_01,
        "Ch3 02 @sec-ch3-02" = s_1_ch3_02,
        "Ch3 03 @sec-ch3-03" = s_1_ch3_03,
        "Ch3 04 @sec-ch3-04" = s_1_ch3_04,
        "Ch3 05 @sec-ch3-05" = s_1_ch3_05,
        "Ch3 06 @sec-ch3-06" = s_1_ch3_06,
        "Ch4 01 @sec-ch4-01" = s_1_ch4_01,
        "Ch4 02 @sec-ch4-02" = s_1_ch4_02,
        # "Ch5 Vision @sec-ch5_vision" = s_1_ch5_vision,
        "Ch5 Case @sec-case" = s_1_case,
        # "Ch5 Vision Case @sec-ch5_vision_case" = s_1_ch5_vision_case
    )

Key Papers in Individual Corpi

Summary

Each column is a different search term, and each row consists of the key papers of a specific chapter and the author who provided the key papers. The number is the number of key papers occurring in the Individual Corpus.

Show the code
in_summary <- grepl("Total|overall", rownames(detail))
knitr::kable(
    detail[in_summary, ]
)
s_1_oa Transformative Change Section 2.2.1 Nature Section 2.2.2 Assessment Corpus Section 2.2.3 Ch1 01 Section 2.2.4.1 Ch1 02 Section 2.2.4.2 Ch1 03 Section 2.2.4.3 Ch1 04 Section 2.2.4.4 Ch1 05 Section 2.2.4.5 Ch1 06 Section 2.2.4.6 Ch2 Section 2.2.5 Ch3 01 Section 2.2.6.1 Ch3 02 Section 2.2.6.2 Ch3 03 Section 2.2.6.3 Ch3 04 Section 2.2.6.4 Ch3 05 Section 2.2.6.5 Ch3 06 Section 2.2.6.6 Ch4 01 Section 2.2.7.1 Ch4 02 Section 2.2.7.2 Ch5 Case Section 2.2.8.2 Total
overall 251,854,599 18,727,588 24,785,843 4,654,618 631,378 3,247,616 16,268,547 2,527,600 26,129,008 6,545,182 110,353,998 16,077,426 33,775,189 28,999,629 10,855,161 13,251,559 20,962,981 889,020 21 96,324,367
Ch_1 - Total 42 40 41 39 19 28 35 30 31 30 41 30 33 33 22 33 35 28 0 38 627
Ch_2 - Total 22 20 22 20 9 17 18 12 17 18 22 20 19 19 15 21 21 16 0 20 347
Ch_3_Cl_3 - Total 4 4 4 4 3 3 4 3 4 4 4 4 4 4 4 4 4 3 0 4 71
Ch_3_Cl_4 - Total 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 4 0 5 92
Ch_3_Cl_5 - Total 3 2 3 2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 0 2 37
Ch_3_Cl_6 - Total 6 6 5 5 1 1 2 3 1 3 5 2 4 5 1 1 5 2 0 3 60
Ch_3 - Total 4 4 4 4 2 1 2 2 3 3 4 3 4 3 1 2 3 2 0 4 54
Ch_4_Cl_1 - Total 7 4 7 4 1 4 5 5 3 5 7 4 4 4 4 6 7 4 0 6 90
Ch_4_Cl_2 - Total 4 3 3 3 2 2 3 1 2 2 3 2 3 3 1 3 3 2 0 3 47
Ch_4_Cl_3 - Total 5 5 5 5 2 2 4 2 3 3 4 3 4 4 3 3 4 2 0 4 66
Ch_4_Cl_4 - Total 4 2 4 2 1 1 3 1 1 2 4 2 1 2 2 2 4 1 0 4 42
Ch_4_Cl_5 - Total 5 3 4 3 1 2 4 2 4 2 5 5 4 4 3 3 5 3 0 5 66
Ch_5 - Total 35 33 33 31 20 23 27 27 26 25 35 29 30 33 26 28 30 20 0 33 543
all - Total 134 120 128 116 60 82 105 87 93 95 130 102 106 110 82 104 118 81 0 120 1972

Detail

Show the code
knitr::kable(
    detail
)
s_1_oa Transformative Change Section 2.2.1 Nature Section 2.2.2 Assessment Corpus Section 2.2.3 Ch1 01 Section 2.2.4.1 Ch1 02 Section 2.2.4.2 Ch1 03 Section 2.2.4.3 Ch1 04 Section 2.2.4.4 Ch1 05 Section 2.2.4.5 Ch1 06 Section 2.2.4.6 Ch2 Section 2.2.5 Ch3 01 Section 2.2.6.1 Ch3 02 Section 2.2.6.2 Ch3 03 Section 2.2.6.3 Ch3 04 Section 2.2.6.4 Ch3 05 Section 2.2.6.5 Ch3 06 Section 2.2.6.6 Ch4 01 Section 2.2.7.1 Ch4 02 Section 2.2.7.2 Ch5 Case Section 2.2.8.2 Total
overall 251,854,599 18,727,588 24,785,843 4,654,618 631,378 3,247,616 16,268,547 2,527,600 26,129,008 6,545,182 110,353,998 16,077,426 33,775,189 28,999,629 10,855,161 13,251,559 20,962,981 889,020 21 96,324,367
Ch_1 - Click here 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 3
Ch_1 - Click here 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 3
Ch_1 - Click here 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 4
Ch_1 - Click here 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 5
Ch_1 - Click here 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 6
Ch_1 - Click here 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 7
Ch_1 - Click here 1 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 8
Ch_1 - Click here 1 1 1 1 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 8
Ch_1 - Click here 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 8
Ch_1 - Click here 1 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 9
Ch_1 - Click here 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 1 10
Ch_1 - Click here 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 1 0 1 12
Ch_1 - Click here 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 0 1 12
Ch_1 - Click here 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 14
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 0 1 15
Ch_1 - Click here 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 15
Ch_1 - Click here 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 15
Ch_1 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 15
Ch_1 - Click here 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 16
Ch_1 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 16
Ch_1 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 16
Ch_1 - Click here 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 16
Ch_1 - Click here 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 16
Ch_1 - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 16
Ch_1 - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_1 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 17
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_1 - Total 42 40 41 39 19 28 35 30 31 30 41 30 33 33 22 33 35 28 0 38 627
Ch_2 - Click here 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 5
Ch_2 - Click here 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 8
Ch_2 - Click here 1 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 9
Ch_2 - Click here 1 1 1 1 0 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 10
Ch_2 - Click here 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 12
Ch_2 - Click here 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 14
Ch_2 - Click here 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 15
Ch_2 - Click here 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 15
Ch_2 - Click here 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 15
Ch_2 - Click here 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 15
Ch_2 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 16
Ch_2 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_2 - Click here 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 17
Ch_2 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_2 - Click here 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_2 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 17
Ch_2 - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_2 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_2 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_2 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_2 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_2 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_2 - Total 22 20 22 20 9 17 18 12 17 18 22 20 19 19 15 21 21 16 0 20 347
Ch_3_Cl_3 - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 16
Ch_3_Cl_3 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_3_Cl_3 - Click here 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_3_Cl_3 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_3_Cl_3 - Total 4 4 4 4 3 3 4 3 4 4 4 4 4 4 4 4 4 3 0 4 71
Ch_3_Cl_4 - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 16
Ch_3_Cl_4 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_3_Cl_4 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_3_Cl_4 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_3_Cl_4 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_3_Cl_4 - Total 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 4 0 5 92
Ch_3_Cl_5 - Click here 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Ch_3_Cl_5 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_3_Cl_5 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_3_Cl_5 - Total 3 2 3 2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 0 2 37
Ch_3_Cl_6 - Click here 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 5
Ch_3_Cl_6 - Click here 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 6
Ch_3_Cl_6 - Click here 1 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 7
Ch_3_Cl_6 - Click here 1 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 8
Ch_3_Cl_6 - Click here 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 0 1 11
Ch_3_Cl_6 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_3_Cl_6 - Total 6 6 5 5 1 1 2 3 1 3 5 2 4 5 1 1 5 2 0 3 60
Ch_3 - Click here 1 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 8
Ch_3 - Click here 1 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 9
Ch_3 - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_3 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 17
Ch_3 - Total 4 4 4 4 2 1 2 2 3 3 4 3 4 3 1 2 3 2 0 4 54
Ch_4_Cl_1 - Click here 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 4
Ch_4_Cl_1 - Click here 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 5
Ch_4_Cl_1 - Click here 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 7
Ch_4_Cl_1 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_4_Cl_1 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_4_Cl_1 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_4_Cl_1 - Click here 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 17
Ch_4_Cl_1 - Total 7 4 7 4 1 4 5 5 3 5 7 4 4 4 4 6 7 4 0 6 90
Ch_4_Cl_2 - Click here 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Ch_4_Cl_2 - Click here 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 1 10
Ch_4_Cl_2 - Click here 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 16
Ch_4_Cl_2 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_4_Cl_2 - Total 4 3 3 3 2 2 3 1 2 2 3 2 3 3 1 3 3 2 0 3 47
Ch_4_Cl_3 - Click here 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 5
Ch_4_Cl_3 - Click here 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 7
Ch_4_Cl_3 - Click here 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 15
Ch_4_Cl_3 - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_4_Cl_3 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_4_Cl_3 - Total 5 5 5 5 2 2 4 2 3 3 4 3 4 4 3 3 4 2 0 4 66
Ch_4_Cl_4 - Click here 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 6
Ch_4_Cl_4 - Click here 1 0 1 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 1 8
Ch_4_Cl_4 - Click here 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 1 9
Ch_4_Cl_4 - Click here 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 16
Ch_4_Cl_4 - Total 4 2 4 2 1 1 3 1 1 2 4 2 1 2 2 2 4 1 0 4 42
Ch_4_Cl_5 - Click here 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 1 7
Ch_4_Cl_5 - Click here 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 7
Ch_4_Cl_5 - Click here 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 16
Ch_4_Cl_5 - Click here 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 16
Ch_4_Cl_5 - Click here 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 16
Ch_4_Cl_5 - Total 5 3 4 3 1 2 4 2 4 2 5 5 4 4 3 3 5 3 0 5 66
Ch_5 - Click here 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 3
Ch_5 - Click here 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 4
Ch_5 - Click here 1 1 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 7
Ch_5 - Click here 1 0 1 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 1 8
Ch_5 - Click here 1 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 1 8
Ch_5 - Click here 1 1 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 1 9
Ch_5 - Click here 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 9
Ch_5 - Click here 1 1 1 1 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 1 11
Ch_5 - Click here 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 12
Ch_5 - Click here 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 12
Ch_5 - Click here 1 1 1 1 0 1 0 0 1 0 1 1 1 1 0 1 1 1 0 1 13
Ch_5 - Click here 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 14
Ch_5 - Click here 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 0 0 1 14
Ch_5 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 16
Ch_5 - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 16
Ch_5 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 17
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 17
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 17
Ch_5 - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_5 - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_5 - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
Ch_5 - Total 35 33 33 31 20 23 27 27 26 25 35 29 30 33 26 28 30 20 0 33 543
all - Click here 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
all - Click here 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
all - Click here 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 3
all - Click here 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 3
all - Click here 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 3
all - Click here 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 4
all - Click here 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 4
all - Click here 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 4
all - Click here 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 5
all - Click here 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 5
all - Click here 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 5
all - Click here 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 5
all - Click here 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 6
all - Click here 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 6
all - Click here 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 6
all - Click here 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 7
all - Click here 1 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 7
all - Click here 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 7
all - Click here 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 7
all - Click here 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 1 7
all - Click here 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 7
all - Click here 1 1 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 7
all - Click here 1 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 8
all - Click here 1 1 1 1 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 8
all - Click here 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 8
all - Click here 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 8
all - Click here 1 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 8
all - Click here 1 0 1 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 1 8
all - Click here 1 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 1 8
all - Click here 1 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 9
all - Click here 1 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 9
all - Click here 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 1 9
all - Click here 1 1 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 1 9
all - Click here 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 9
all - Click here 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 1 10
all - Click here 1 1 1 1 0 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 10
all - Click here 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 1 10
all - Click here 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 0 1 11
all - Click here 1 1 1 1 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 1 11
all - Click here 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 1 0 1 12
all - Click here 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 0 1 12
all - Click here 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 12
all - Click here 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 12
all - Click here 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 12
all - Click here 1 1 1 1 0 1 0 0 1 0 1 1 1 1 0 1 1 1 0 1 13
all - Click here 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 14
all - Click here 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 14
all - Click here 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 14
all - Click here 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 0 0 1 14
all - Click here 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 0 1 15
all - Click here 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 15
all - Click here 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 15
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 15
all - Click here 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 15
all - Click here 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 15
all - Click here 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 15
all - Click here 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 15
all - Click here 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 15
all - Click here 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 16
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 16
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 16
all - Click here 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 16
all - Click here 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 16
all - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 16
all - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 16
all - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 16
all - Click here 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 16
all - Click here 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 16
all - Click here 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 16
all - Click here 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 16
all - Click here 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 16
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 16
all - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 16
all - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 17
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 17
all - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 17
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 17
all - Click here 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 17
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Click here 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 18
all - Total 134 120 128 116 60 82 105 87 93 95 130 102 106 110 82 104 118 81 0 120 1972

TCA Corpus properties

Publications over time

The red line is the cumulative proportion of publications, the blue line the cumulative proportion of all of the Op[enAlex corpus. Both use the secondeary (red) axis.

To download high resolution, click here

Show the code
readRDS(file.path(".", "data", "tca_corpus", "publications_over_time_tca_corpus.rds")) |>
    IPBES.R::table_dt(fn = "publications_over_time")

Countries in TCA Corpus

The countries are based on the countries of the institutes of all authors, weighted by 1/no_ authors_per_paper.

The following calculations were done:

  • **count** =ifelse(is.na(count), 0, count)`
  • **log_count** =log(count + 1)`
  • **p** =count / sum(count)`
  • **count_oa** =ifelse(is.na(count_oa), 0, count)`
  • **log_count_oa** =log(count_oa + 1)`
  • **p_oa** =count_oa / sum(count_oa)`
  • **p_diff** =(p_oa - p) * 100`
  • **p_ratio** =count / count_oa`
Show the code
readRDS(file.path(".", "data", "tca_corpus", "countries_tca_corpus.rds")) |>
    IPBES.R::table_dt(fn = "publications_per_country")

All Years

To download high resolution, click here

Sectors over time

For clarity, the log of the cumulative sum of the sectors over time are shown here.

The top graph shows only the primary sector assigned, the bottom graph all sectors (first, secondary and tertiary)

To download high resolution, click here

The graph shows the proportion of the different sectors over time

To download high resolution, click here

Show the code
readRDS(file.path(".", "data", "tca_corpus", "sectors_over_time.rds")) |>
    IPBES.R::table_dt(
        fn = "sectors_over_time",
        fixedColumns = list(leftColumns = 3)
    )

Topics in corpus

Show the code
#|

cs <- cumsum(prim_topics_tca_corpus$count)
cs |>
    plot(
        type = "l",
        xlab = "Topic",
        ylab = "Cumulative Count",
        main = "Cumulative Topics in TCA Corpus"
    )

abline(
    h = 0.95 * cs[length(cs)],
    v = min(which(cs > 0.95 * cs[length(cs)])),
    col = "red"
)

text(
    x = 0.5 * length(cs),
    y = 0.95 * cs[length(cs)],
    pos = 3,
    labels = "95% of the corpus",
    col = "red"
)

Show the code
#|

prim_topics_tca_corpus |>
    relocate(count, .after = "id") |>
    IPBES.R::table_dt(
        fn = "topics_tca_corpus",
    )
Warning in instance$preRenderHook(instance): It seems your data is too big for
client-side DataTables. You may consider server-side processing:
https://rstudio.github.io/DT/server.html

SubFields in Corpus

Show the code
#|
cs <- prim_topics_tca_corpus |>
    mutate(
        id = NULL,
        topic_name = NULL,
        keywords = NULL,
        summary = NULL,
        wikipedia_url = NULL
    ) |>
    group_by(
        subfield_id,
    ) |>
    summarise(
        count = sum(count)
    ) |>
    arrange(desc(count)) |>
    dplyr::select(count) |>
    unlist() |>
    cumsum()
cs |>
    plot(
        type = "l",
        xlab = "Subfield",
        ylab = "Cumulative Count",
        main = "Cumulative Subfields in TCA Corpus"
    )

abline(
    h = 0.95 * cs[length(cs)],
    v = min(which(cs > 0.95 * cs[length(cs)])),
    col = "red"
)

text(
    x = 0.5 * length(cs),
    y = 0.95 * cs[length(cs)],
    pos = 3,
    labels = "95% of the corpus",
    col = "red"
)

Show the code
#|

prim_topics_tca_corpus |>
    mutate(
        topic_id = NULL,
        topic_name = NULL,
        keywords = NULL,
        summary = NULL,
        wikipedia_url = NULL
    ) |>
    group_by(
        subfield_id,
        subfield_name,
        field_id,
        field_name,
        domain_id,
        domain_name
    ) |>
    summarise(
        count = sum(count),
        .groups = "drop"
    ) |>
    arrange(desc(count)) |>
    relocate(count, .after = "subfield_id") |>
    DT::datatable(
        extensions = c(
            "Buttons",
            "FixedColumns",
            "Scroller"
        ),
        options = list(
            dom = "Bfrtip",
            buttons = list(
                list(
                    extend = "csv",
                    filename = fn
                ),
                list(
                    extend = "excel",
                    filename = fn
                ),
                list(
                    extend = "pdf",
                    filename = fn,
                    orientation = "landscape",
                    customize = DT::JS(
                        "function(doc) {",
                        "  doc.defaultStyle.fontSize = 5;", # Change the font size
                        "}"
                    )
                ),
                "print"
            ),
            scroller = TRUE,
            scrollY = JS("window.innerHeight * 0.7 + 'px'"),
            scrollX = TRUE,
            fixedColumns = list(leftColumns = 4)
        ),
        escape = FALSE
    )

==== APPENDIX ====

Assesment of Sectors / Contcepts search terms

The file strategies_options.txt contains the terms for the different strategies and options.

I will now iterate through all of them and identify the number of hits per individual search term. This can be used as a result in itself in interpreting the importance of each term as well as to shorten the search term to be able to use it together with the TCA search term.

Methods

Prepare Search Terms

Show the code
fn <- file.path("data", "tca_corpus", "strategies_options_terms.rds")
if (!file.exists(fn)) {
    # Read the lines from the file
    sts <- readLines("input/tca_corpus/search terms/strategies_options.txt")

    # Remove empty or NA lines or Main header ("# ")
    sts <- sts[!is.na(sts) & nchar(sts) > 0]
    sts <- grep("^# ", sts, invert = TRUE, value = TRUE)

    # Create a vector that indicates where each new first-level element should start
    split_points_level1 <- cumsum(grepl("^## \\(", sts))

    # Split the vector into a list
    list_sts_level1 <- split(sts, split_points_level1)

    # For each first-level element, split into second-level elements
    list_sts_level2 <- lapply(list_sts_level1, function(x) {
        split_points_level2 <- cumsum(grepl("^###", x))
        split(x, split_points_level2)
    })

    # Remove the lines with "## (" and "###" from each element of the list
    strategies_options_terms <- lapply(
        list_sts_level2,
        function(x) {
            lapply(
                x,
                function(y) {
                    res <- y[!grepl("^## \\(|^###", y)]
                    if (length(res) == 0) {
                        res <- NULL
                    }
                    return(res)
                }
            )
        }
    )

    # Remove empty elements from the second-level lists
    strategies_options_terms <- lapply(
        strategies_options_terms,
        function(sts) {
            i <- sapply(
                sts,
                length
            ) > 0
            return(sts[i])
        }
    )

    # Extract the names for the first-level list
    names_level1 <- gsub("^## \\(|\\)$", "", sts[grepl("^## \\(", sts)])

    # Extract the names for the second-level lists
    names_level2 <- lapply(list_sts_level1, function(x) gsub("^### |\\)$", "", x[grepl("^###", x)]))
    names(names_level2) <- names_level1

    # Assign the names to the first and second level list
    names(strategies_options_terms) <- names_level1
    strategies_options_terms <- Map(setNames, strategies_options_terms, names_level2)

    saveRDS(strategies_options_terms, file = fn)
} else {
    strategies_options_terms <- readRDS(fn)
}

First Run the search terms

Show the code
fn <- file.path("data", "tca_corpus", "strategies_options.rds")
if (!file.exists(file.path(fn))) {
    strategies_options_terms <- readRDS(file.path("data", "tca_corpus", "strategies_options_terms.rds"))
    strategies_options <- lapply(
        names(strategies_options_terms),
        function(sec) {
            message("- ", sec)
            lapply(
                names(strategies_options_terms[[sec]]),
                function(conc) {
                    message("    |- ", conc)
                    result <- list()
                    result$term <- paste(strategies_options_terms[[sec]][[conc]], collapse = " ")
                    result$count <- NA
                    result$shortened <- TRUE
                    rel_excluded <- NA
                    result$years <- NA
                    result$assess_search_terms <- NA
                    try(
                        {
                            result$count <- openalexR::oa_fetch(
                                title_and_abstract.search = IPBES.R::compact(paste0("(", params$s_1_tca_corpus, ") AND (", result$term, ")")),
                                count_only = TRUE,
                                output = "list",
                                verbose = FALSE
                            )$count
                            result$shortened <- FALSE
                            result$assess_search_terms <- assess_search_term(
                                st = strategies_options_terms[[sec]][[conc]],
                                remove = " OR$",
                                excl_others = FALSE,
                                mc.cores = params$mc.cores
                            ) |>
                                dplyr::arrange(desc(count))
                            result$years <- openalexR::oa_fetch(
                                title_and_abstract.search = IPBES.R::compact(paste0("(", params$s_1_tca_corpus, ") AND (", result$term, ")")),
                                group_by = "publication_year",
                                output = "dataframe",
                                verbose = FALSE
                            ) |>
                                dplyr::select(
                                    publication_year = key_display_name,
                                    count
                                ) |>
                                dplyr::arrange(
                                    publication_year
                                )
                        },
                        silent = TRUE
                    )
                    if (result$shortened) {
                        x <- reduce_search_term_length(
                            search_term = result$term,
                            AND_term = params$s_1_tca_corpus,
                            verbose = FALSE
                        )
                        result$term <- x$search_term
                        result$count <- x$final_count
                        result$shortened <- TRUE
                        result$rel_excluded <- x$rel_excluded
                        result$years <- openalexR::oa_fetch(
                            title_and_abstract.search = IPBES.R::compact(paste0("(", params$s_1_tca_corpus, ") AND (", result$term, ")")),
                            group_by = "publication_year",
                            output = "dataframe",
                            verbose = FALSE,
                            progress = TRUE
                        )
                        result$assess_search_terms <- x$assessment
                    }
                    return(result)
                }
            )
        }
    )

    # Assign the names to the first and second level list
    names(strategies_options) <- names(strategies_options_terms)
    for (sec in names(strategies_options)) {
        names(strategies_options[[sec]]) <- names(strategies_options_terms[[sec]])
    }

    saveRDS(strategies_options, file = fn)
} else {
    strategies_options <- readRDS(fn)
}

Results

Count of Concepts

Show the code
#|

strategies_options <- readRDS(file.path("data", "tca_corpus", "strategies_options.rds"))

lapply(
    names(strategies_options),
    function(str) {
        lapply(
            names(strategies_options[[str]]),
            function(con) {
                return(
                    data.frame(
                        Strategy = str,
                        Concept = con,
                        Count = strategies_options[[str]][[con]]$count
                    )
                )
            }
        ) |>
            do.call(what = rbind)
    }
) |>
    do.call(what = rbind) |>
    IPBES.R::table_dt(
        fn = "strategies_options_counts",
        fixedColumns = list(leftColumns = 2)
    )

Assesment of individual terms

These numbers are the number of hits of TCA Corpus AND each individual term of the Concept

Show the code
lapply(
    names(strategies_options),
    function(str) {
        # cat("\n\n### ", str, "\n")
        lapply(
            names(strategies_options[[str]]),
            function(con) {
                # cat("\n#### ", con, "\n")
                strategies_options[[str]][[con]]$assess_search_terms |>
                    knitr::kable(
                        caption = paste0(str, " -- ", con)
                    )
            }
        )
    }
)

[[1]] [[1]][[1]]

1) Conserve restore and regenerate places of value to nature and people. – Conservation and restoration options
term count
Restoration 486786
MPA 340708
“Protected area” 60329
“Marine protected area” 11804
“Remedial action” 10707
“Forest conservation” 8079
“Co-management” 6377
“Co-management” 6377
“Marine reserve” 3961
“Marine park” 3139
“sacred site” 2474
ICCA 2454
Rewilding 1768
“Community-based management” 1622
“sacred grove” 1419
“Ecosystem-based approach” 1190
OECM 278
“Community protocol” 268
“Biocultural conservation” 189
“Other Effective area-based Conservation Measure” 158
“Transboundary protected area” 152
“Land sovereignty” 92
“Community-led conservation” 41
“Convivial conservation” 39
“Indigenous and Community Conserved Area” 38
“High sea conservation” 27
“High seas conservation” 27
“Indigenous-led conservation” 27
“Other effective Conservation Measure” 13

[[1]][[2]]

1) Conserve restore and regenerate places of value to nature and people. – Conservation finance
term count
“Public-private partnership” 35904
“Tourism revenue” 1547
“Conservation funding” 662
“Environmental finance” 349
“Debt-for-nature swap” 213
“Conservation finance” 182
“Biodiversity finance” 72
“Ecological finance” 33
“Conservation trust fund” 26
“Nature finance” 26
“Conservation philanthropy” 16
“Direct funding to community” 6
“Public funding for conservation” 6
“Resource user fee” 0
“Simplified funding application” 0

[[1]][[3]]

1) Conserve restore and regenerate places of value to nature and people. – Conservation regulation
term count
“Environmental Law” 24729
“Environmental Impact Assessment” 19522
“Legal pluralism” 4664
“Official development assistance” 4183
“Land Use Regulation” 2718
“Zoning Regulation” 1071
“Habitat Conservation Plan” 396
“Waste Management Regulation” 350
“Environmental public interest litigation” 217
“National biodiversity strategy and action plan” 152
“Seasonal restriction” 111
NBSAP 105
“Resource Management Law” 94
“Invasive Species Regulation” 40
“Logging regulation” 36
“Agri-Environmental and Climate Measure” 9

[[1]][[4]]

1) Conserve restore and regenerate places of value to nature and people. – Management
term count
Management 7162649
“Sustainable use” 28149
“Coastal management” 6997
“Integrated coastal zone management” 1677
“Ocean governance” 1372
“Transboundary water management” 416
“Marine governance” 384
“Coastal governance” 323
“Integrated landscape management” 181
“Sustainable wildlife management” 92
“Invasive alien species management” 49
“Marine and coastal governance” 15
“Coastal waters management” 13
“Landscape governance network” 0
“Land and marine resource management” 0
“Shared and integrated ocean governance” 0

[[1]][[5]]

1) Conserve restore and regenerate places of value to nature and people. – Monitoring
term count
Monitoring 3758171
“remote sensing” 298052
“environmental impact assessment” 19522
“citizen science” 16036
“forest monitoring” 2140
“ocean monitoring” 1108
“species monitoring” 1084
“marine monitoring” 1054
“coastal monitoring” 1014
“fish monitoring” 626
“marine mammal monitoring” 145
“plankton monitoring” 98
“open ocean monitoring” 11
“citizen science observation programme” 0

[[1]][[6]]

1) Conserve restore and regenerate places of value to nature and people. – Spatial planning
term count
“Spatial planning” 24740
“Land-use planning” 23468
“Environmental Impact assessment” 19522
“Master Plan” 18709
“Buffer zone” 10940
“Infrastructure Planning” 5419
“Strategic Environmental Assessment” 2942
“Marine spatial planning” 2394
“Zoning Regulation” 1071
“Maritime spatial planning” 586
“Land Use Permit” 176
“Participatory Planning Approach” 132
“Multi-functional landscape” 108
“Development Control Regulation” 63
“GIS and Spatial Analysis Tool” 26
“Cross-Boundary Coordination Mechanism” 0

[[1]][[7]]

1) Conserve restore and regenerate places of value to nature and people. – Right-based approaches
term count
“Human right” 21696
“Intellectual property right” 2674
“right to water” 2018
“Access and benefit sharing” 1256
“community rights” 1026
“Free prior and informed consent” 585
FPIC 552
UNDRIP 456
“Right of nature” 318
“communal rights” 274
“International Labour Organization Convention” 91
“Universal Declaration of Human Right” 50
“International Human Right Treaty” 20
“International Covenant on Civil and Political Right” 17
“Indigenous and local language” 9
“International Covenant on Economic Social and Cultural Right” 5
“United Nations Declaration on the Right of Indigenous Peoples” 5
“IPLC ownership” 0
0

[[2]] [[2]][[1]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Certification and standards
term count
Standards 5516398
Labeling 1520508
Guidelines 1279265
Certification 270537
“ISO Standards” 8802
“Organic Certification” 1186
“green branding” 981
“LEED Certification” 692
Ecolabeling 253
“Fair Trade Certification” 180
“UTZ Certified” 99
“B-Corp Certification” 75
“Forest Stewardship Council Certification” 57
“Marine Stewardship Council Certification” 47
“Rainforest Alliance Certification” 39
“Non-GMO Project Verification” 10
“Aquaculture stewardship council certification” 0

[[2]][[2]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Community-driven initiatives
term count
“Local reuse 12421
“Farmers’ Market” 4655
“Community Garden” 3477
fix-up initiative” 956
“Bottom-up initiative” 917
“Urban gardening” 803
“Community goal” 766
“Local action group” 687
“Beach cleanup” 103
“Citizen-led initiative” 83
“Transition Town Movement” 67
“Community-based Renewable Energy Project” 22
“Zero Waste Community” 19
“Community-Led Conservation Initiative” 9
“Local Food Cooperative” 5
“Community-Led Sustainable Transportation Initiative” 0
“Local Currency and Exchange System” 0
“Neighborhood Repair and Reuse Program” 0
“Street and Neighborhood Cleanup Campaign” 0

[[2]][[3]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Green infrastructure
term count
“Public transport” 50706
“Constructed wetland” 16548
“Green infrastructure” 9845
Biofilter 8825
“Urban park” 8279
“Urban forest” 8023
“Green roof” 7304
“Water infrastructure” 5905
“Energy efficient building” 4943
“Sustainable infrastructure” 2757
“Riparian buffer” 2461
“green logistics” 1939
“Permeable pavement” 1786
“Green wall” 1611
“Rain garden” 1240
“Ecological restoration project” 1030
“Green street” 586
“Sustainable drainage system” 576
“Floodplain restoration” 376
“Living shoreline” 337
Bioswale 335
“Vegetated swale” 192
“Access to urban service” 110
“Multi-purpose structure” 44
“Urban agriculture space” 29
“Blue-green corridor” 10
“Articulated density in city” 0
“Food storage and delivery system” 0

[[2]][[4]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Green technology
term count
“Wind turbine” 115980
Biofuel 82854
Biomimetic 63133
microgrid 53079
“Solar panel” 27124
“Geothermal energy” 16482
“Smart meter” 14680
“Hybrid vehicle” 10321
“local currency” 3995
“Solar photovoltaic system” 3620
“Climate-smart agriculture” 2998
“Green building material” 920
“Fuel-efficient vehicle” 665
Minigrid 435
“Biomass energy production” 359
“Coordinated transport” 253
“energy sharing platform” 11
“Coordinated heating” 6
“Replacement fertilizer” 6
“Small renewable energy technology” 1
“Coordinated electrification” 0
“High Carbon Stock landscape” 0
“Microbial plant bio-fertilizer” 0
“Microbial plant bio-stimulant” 0
“Microbial plant regulator” 0
“Microbial plant biocide” 0

[[2]][[5]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Market-based mechanisms
term count
“Corporate Social Responsibility” 79745
“Environmental Tax” 4142
“carbon credit” 3874
“income transfer” 2509
“Socially responsible investment” 2356
“Reducing Emission from Deforestation and Forest Degradation” 1891
“Derivative trading” 1098
“Cap and Trade System” 1071
“Tradable permit” 1017
“Subsidy Reform” 1015
“Biodiversity offset” 753
“Trade ban” 457
“Compensation for environmental damage” 182
“Commodity future” 176
“cap and share” 78
“Mitigation for environmental damage” 78
“Ecological fiscal transfer” 51
“Restoration for environmental damage” 20
“Reform environmental-harmful subsidy” 11
“Market-based financing mechanism” 10
“Biodiversity compensation policy” 7
“True cost pricing” 5
“Commodity chain regulation” 3

[[2]][[6]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Market regulation
term count
“Compliance” 562577
Enforcement 486026
“Corporate social responsibility” 79745
Quota 59917
“public procurement” 15629
“Regulatory measure” 6191
“Licensing and Permitting” 4742
“Pollution Control Measure” 1358
“Limit on pollution” 429
“Sustainable public procurement” 394
“Wildlife trade regulation” 33
“Regulation of Resource Extraction” 6
“Cap resource consumption” 1
“converson off-budget subsidies” 0
“Food market transparency” 0
“Legislative control over pesticide use” 0
“sanction to biodiversity damage” 0
“Unsustainable use of biodiversity sanction” 0

[[2]][[7]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Sustainable production
term count
Compost 80015
Agroforestry 24399
“Crop rotation” 23529
“Sustainable production” 18991
“Organic agriculture” 9894
“fair trade” 9881
“Sustainable design” 9417
Agroecology 6799
“Conservation tillage” 6474
“Crop diversification” 3770
“Climate-smart agriculture” 2998
“Sustainable fishing” 816
“Regenerative agriculture” 633
“Reduced impact logging” 577
“Biological agriculture” 531
“Carbon farming” 511
“Swidden agriculture” 479
“Responsible production” 473
“Sustainable agricultural intensification” 422
“Sustainable fishing practice” 154
“Regenerative farming” 108
“Best practice in production” 72
“Holistic planned grazing” 24

[[3]] [[3]][[1]]

3) Transform economic systems to address power inequities and extractivist activities – Alternative business models
term count
“Open Source” 210674
“Fair Trade” 9881
“Collaborative Consumption” 1235
“Cradle-to-Cradle” 1220
“Community-supported Agriculture” 1184
“Benefit Corporation” 916
“Alternative business model” 507
“B-Corp” 282
“B-Corporation” 264
“Platform Cooperative” 146
“Subscription-based Model” 118
“Employee-owned Business” 48

[[3]][[2]]

3) Transform economic systems to address power inequities and extractivist activities – Alternative economic models
term count
Commoning 5683382
“Circular economy” 39284
“Sharing economy” 10165
Bioeconomy 7695
Degrowth 2343
“circular bioeconomy” 1684
“Caring economics” 915
“Ecosystem accounting” 511
“Steady state economy” 331
“Natural capital accounting” 318
“Mainstreaming biodiversity” 210
“Alternative economic model” 178
“downscale production” 10
“Ecosystem services provisioning scheme” 0

[[3]][[3]]

3) Transform economic systems to address power inequities and extractivist activities – Environmental governance
term count
“Food sovereignty” 3839
“Guidelines for Securing Sustainable Small-Scale Fisheries” 95
“Guidelines on the Responsible Governance of Tenure of Land Fisheries and Forests” 43
“Land and water stewardship” 7

[[3]][[4]]

3) Transform economic systems to address power inequities and extractivist activities – Supply chain governance and transparency
term count
Standard 5516399
Labeling 1520508
Certification 270537
Guideline 246780
“ISO Standard” 8802
“Third-party auditing” 492
“Third-party verification” 415
“Public procurement policy” 341
“Mandatory reporting requirement” 193
“Whistleblower protection law” 64
“Consumer demand for transparency” 9
“Collaborative supply chain initiative” 8
“Corporate disclosure mandate” 2
“relocalize economy” 2
“Supplier code of conduct requirement” 1
“Blockchain technology for supply chain tracking” 0
“Multi-stakeholder partnership for transparency” 0
“Supply chain traceability regulation” 0
“Traffic light nutrient labeling” 0

[[3]][[5]]

3) Transform economic systems to address power inequities and extractivist activities – Sustainable consumption
term count
reuse 490441
recycle 425996
“Sustainable consumption” 7530
“reduce consumption” 7476
“plant-based diet” 4251
“shared ownership” 3613
“Responsible consumption” 2106
“green consumption” 1993
“Collaborative Consumption” 1235
“Tax on consumption” 943
“Food waste reduction” 860
“Dietary transition” 674
“Normative feedback” 508
“Behavioral nudge” 298
“shared consumption” 286
“Localized food system” 81
“frugal consumption” 26
“Sustainable sourcing practice” 20
“Fee on consumption” 14
“low-impact diet” 5
“Campaign on consumer good” 0
“ban on planned obsolescence” 0
“Overbuying discouragement” 0
“relocalize consumption” 0

[[3]][[6]]

3) Transform economic systems to address power inequities and extractivist activities – Sustainability and well-being measures
term count
“Human Development Index” 12581
“Ecological Footprint” 9566
“Living Standards Survey” 1602
“Gross National Happiness” 779
“World Happiness Report” 252
“Genuine Progress Indicator” 234
“Social Progress Index” 225
“Happy Planet Index” 177
“Index of Sustainable Economic Welfare” 147
“Inclusive Wealth Index” 37
“wellbeing budget” 32
“Doughnut planning” 1

[[4]] [[4]][[1]]

4) Transform governance systems to be inclusive accountable and adaptive. – Anti-corruption measures
term count
“Convention against Corruption” 821
“Address corruption” 479
“measures against corruption” 95
“Whistleblower protection law” 64
“Disempowering corruption” 0
“Disempowering elitism” 0
“Disempowering lobbyism” 0
“Dismantle vested interests” 0

[[4]][[2]]

4) Transform governance systems to be inclusive accountable and adaptive. – Customary governance
term count
“Customary law” 11394
“Indigenous education” 2431
“Community cooperation” 928
“Customary institution” 710
“Customary norm” 667
“Customary tenure” 501
“Resource stewardship” 423
“Indigenous and local knowledge” 383
“Indigenous jurisdiction” 118
“Intergenerational knowledge transmission” 25
“IPLC governance” 1
“Customary access right” 0
“IPLC led code of conduct” 0
“IPLC livelihood and economy” 0

[[4]][[3]]

4) Transform governance systems to be inclusive accountable and adaptive. – Engagement and participation
term count
Participation 1125220
“Co-Design” 26993
“Co-Creation” 23237
“Stakeholder engagement” 13111
“Community-Based Participatory Research” 6991
“Community-based natural resource management” 974
“Community-based monitoring” 578
“Citizen Science Initiative” 572
“Multi-stakeholder platform” 331
“Online Platform and Social Media” 86
“Global action network” 38
“Capacity Building and Training Program” 27
“Deliberative Democracy Process” 20
“Community Meeting and Workshop” 14
“Participatory Mapping and GIS” 14
“Public Consultation and Hearing” 8
“Participatory evaluation and learning” 7
“Participation in international process” 6

[[4]][[4]]

4) Transform governance systems to be inclusive accountable and adaptive. – Governance and democratic processes
term count
“Policy monitoring” 1023
“Conflict resolution mechanism” 999
“Capacity building initiative” 953
“Citizen assembly” 595
“Adaptive management framework” 384
“Local governance structure” 273
“Open government initiative” 270
“Participatory decision-making process” 233
“Deep democracy” 232
“Access to information law” 186
“Transparency and accountability mechanism” 55
“Policy co-design” 24
“Bottom-up governance approach” 17
“Policy co-creation” 17
“Gender-responsive governance” 12
“Deliberative democracy mechanism” 8
“Gender inclusive governance” 8
“Accountable evaluation and learning” 0
“Culturally appropriate governance model” 0

[[4]][[5]]

4) Transform governance systems to be inclusive accountable and adaptive. – International agreements
term count
CITES 2829540
CMS 81638
“Sustainable Development Goal” 65746
SDG 47895
“International agreement” 23240
“Paris Agreement” 12865
“Kyoto Protocol” 11288
“United Nations Framework Convention on Climate Change” 5027
“Convention on Biological Diversity” 4915
“Agenda 21” 4347
“Bilateral agreement” 4225
“Montreal Protocol” 2969
“MARPOL” 1630
“Stockholm Convention” 1579
“Multilateral environmental agreement” 1175
“Global trade system” 1115
“Ramsar Convention” 1107
“Nagoya Protocol” 1100
“Convention on International Trade in Endangered Species of Wild Fauna and Flora” 932
“Basel Convention” 720
“Minamata Convention” 707
“Rio Declaration” 699
“Cartagena Protocol” 648
“EU Green Deal” 387
“United Nations Convention to Combat Desertification” 363
“Aichi Biodiversity Target” 330

[[4]][[6]]

4) Transform governance systems to be inclusive accountable and adaptive. – Legislative reforms
term count
“Institutional reform” 13132
“Judicial independence” 4319
“Anti-discrimination law” 2156
“Institutional entrepreneurship” 1260
“Freedom of information law” 405
“Ombudsman institution” 334
“Decentralization law” 181
“Equitable access to justice” 28
“Public participation law” 16
“Legal empowerment of marginalized group” 1
“Environmental justice mechanism” 0
“Institutional setting reform” 0

[[5]] [[5]][[1]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Behavioral change
term count
“Behavioral change” 85363
“Social norm” 42571
Nudging 21093
“Consumption reduction” 5737
“Peer-to-peer communication” 1581
“Choice architecture” 1415
“Food waste reduction” 860
“Dietary transition” 674
“Normative feedback” 508
“Behavioral nudge” 298
“Campaign on consumer goods” 2
“Overbuying discouragement” 0

[[5]][[2]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Capacity building
term count
“Capacity building” 50519
“Awareness campaign” 12687
“Capacity development” 7154
“Practical learning” 3515
“Cultural revitalization” 622
“Cultural exchange program” 210
“Inner capacity” 142
“Inner development goal” 9
“Indigenous Peoples’ rights training and capacity building” 0
“Leadership and capacity for action” 0

[[5]][[3]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Cultural change
term count
“Education program” 143403
“Social media platform” 36637
“Artistic expression” 9599
“Cultural transformation” 7765
“Cultural event” 6713
“Cultural narrative” 3326
“Mass media campaign” 1888
“Community dialogue” 743
“Regenerative culture” 213
“Youth empowerment program” 105
“Civic engagement initiative” 69
“Storytelling initiative” 55

[[5]][[4]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Education
term count
Curriculum 617045
Imagination 172217
“K-12” 48812
“Environmental education” 28747
“Experiential learning” 28169
“Social learning” 27084
“Solution space” 18234
“Adult learning” 12408
“Transformative learning” 7876
“Transformational learning” 1724
“Experiential teaching” 908
“Transformation lab” 45
“Imagination infrastructure” 2

[[5]][[5]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Holistic approaches to sustainability
term count
“Community health” 85801
“One health” 16694
“Cultural pluralism” 3435
“Alternative vision” 3272
“Planetary health” 3034
“Harmony with nature” 2534
“Holistic management” 2075
“Water-energy-food nexus” 1363
“Rights of nature” 1304
“Indigenous worldview” 834
Ecohealth 639
“Respect for cultural diversity” 298
“Holistic worldview” 286
“Living in balance” 188
“Unitive education” 187
“Eco-centrism” 120
“Unitive vision” 47
“Unitive narrative” 30
“Interconnectedness of all life forms” 9
“Natural social contract” 9
“Recognition of the intrinsic value of biodiversity” 1
“Localism and decentralization of governance” 0
“Recognition of indigenous wisdom and knowledge” 0

[[5]][[6]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Network and collaboration
term count
Facilitator 2315060
Connector 661115
“Social network” 279640
Multiplier 274449
Intermediary 98336
“Learning network” 18786
“Change agent” 11923
“Knowledge network” 7597
“Community network” 6225
“Policy network” 6171
“Technology network” 3911
“Collaborative initiative” 2581
“Advocacy network” 1584
“Boundary spanner” 1467
“Partnership network” 762
“Boundary organization” 474
“Multi-stakeholder platform” 331
“Innovation broker” 133
“Respectful partnership” 126
“Transition intermediary” 47
“Middle actor” 42
“Indigenous peoples’ network” 5
“New collaborative setting” 2

[[5]][[7]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Knowledge co-creation
term count
“Local knowledge” 17746
“Indigenous knowledge” 16937
“Knowledge system” 16028
“Knowledge co-production” 776
“Knowledge co-creation” 515
“Co-creation of knowledge” 484
“Indigenous and local knowledge” 383
“Art-science collaboration” 207
“Collaborative knowledge production” 170
“Participatory research and development” 100
“Weaving knowledge” 72
“Breeding knowledge” 67
“Collaborative research and learning” 42
“Multiple evidence-based approach” 22
“Collective knowledge generation” 19
“Jointly constructed knowledge” 12
“Joint knowledge development” 10
“Participatory knowledge creation” 8
“Knowledge co-design” 7
“Co-creative inquiry” 5

[[5]][[8]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Psychological change
term count
Oneness 20017051
Connection 1441859
“Paradigm shift” 73114
Mindset 55924
“Support group” 30286
“Belief system” 17014
“Developmental psychology” 11398
Epiphany 7868
“Personal meaning” 4682
“Personal transformation” 2056
Biophilia 1456
“Identity shift” 975
“Inner transformation” 385
“Transformative learning spaces” 66

[[5]][[9]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Spiritual and cultural practices
term count
Presence 5932935
Connectedness 1167356
Ritual 182129
Wisdom 161398
Festival 115118
Spirituality 85038
Mindfulness 80071
Ceremony 60771
HNC 12199
Psychedelic 7876
“Environmental stewardship” 4167
“Cultural preservation” 2481
“Connection to nature” 2378
“Interfaith dialogue” 1796
“Plant medicine” 1100
“Spiritual connection” 992
“Community solidarity” 873
“Cultural revitalization” 622
“Prayer and meditation” 466
“Community bond” 293
“Human-nature connection” 128
“Human-nature connection” 128
“Sacred teaching” 98
“Human-nature relation” 60
“Interfaith collaboration” 44
“Ethical framework and value” 13
“Continuity with ancestors” 10

[[5]][[10]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Values for sustainability
term count
Values 11363878
Justice 672752
Integrity 594450
Equity 382561
Resilience 318635
Transparency 272374
relationality 256125
Adaptability 239743
Empathy 122012
Thriving 106126
Interdependence 83679
Reciprocity 60590
Compassion 55978
Sufficiency 55267
Stewardship 54914
“Systems thinking” 16708
Holism 14718
“Good life” 13191
“Precautionary principle” 6719
“Respect for Diversity” 1616
“Balanced relationship” 1039
“relational values” 990
“Caring for nature” 954

Counts over Years for each TCA Corpus AND Concept

Show the code
lapply(
    names(strategies_options),
    function(str) {
        # cat("\n\n### ", str, "\n")
        lapply(
            names(strategies_options[[str]]),
            function(con) {
                # cat("\n#### ", con, "\n")
                strategies_options[[str]][[con]]$years |>
                    knitr::kable(
                        caption = paste0(str, " -- ", con)
                    )
            }
        )
    }
)

[[1]] [[1]][[1]]

1) Conserve restore and regenerate places of value to nature and people. – Conservation and restoration options
x
NA

[[1]][[2]]

1) Conserve restore and regenerate places of value to nature and people. – Conservation finance
publication_year count
1939 1
1962 2
1967 1
1969 1
1970 1
1971 1
1972 1
1974 1
1975 2
1978 2
1979 3
1980 1
1982 2
1984 2
1985 4
1986 3
1987 5
1988 2
1989 9
1990 6
1991 5
1992 7
1993 6
1994 13
1995 8
1996 9
1997 10
1998 9
1999 10
2000 36
2001 26
2002 27
2003 50
2004 53
2005 61
2006 76
2007 90
2008 106
2009 90
2010 116
2011 156
2012 175
2013 175
2014 237
2015 218
2016 219
2017 240
2018 241
2019 301
2020 342
2021 327
2022 352
2023 343
2024 71

[[1]][[3]]

1) Conserve restore and regenerate places of value to nature and people. – Conservation regulation
publication_year count
1911 1
1918 1
1949 1
1956 1
1959 2
1962 4
1966 1
1967 1
1968 3
1969 3
1970 12
1971 2
1972 2
1973 3
1974 7
1975 6
1976 10
1977 9
1978 2
1979 8
1980 14
1981 17
1982 5
1983 8
1984 12
1985 13
1986 6
1987 12
1988 12
1989 25
1990 15
1991 31
1992 31
1993 47
1994 44
1995 59
1996 49
1997 65
1998 72
1999 78
2000 85
2001 99
2002 102
2003 118
2004 145
2005 166
2006 176
2007 183
2008 217
2009 267
2010 273
2011 304
2012 342
2013 352
2014 389
2015 369
2016 391
2017 410
2018 443
2019 475
2020 471
2021 547
2022 447
2023 518
2024 148

[[1]][[4]]

1) Conserve restore and regenerate places of value to nature and people. – Management
publication_year count
1770 1
1777 1
1780 1
1790 1
1817 1
1819 2
1824 1
1826 1
1827 1
1828 2
1829 1
1830 1
1832 1
1836 1
1837 1
1841 1
1845 1
1846 1
1848 1
1849 3
1852 1
1853 1
1854 1
1856 3
1858 3
1859 3
1861 2
1862 2
1863 3
1864 2
1865 2
1866 2
1868 2
1870 2
1871 2
1872 1
1875 1
1876 3
1877 1
1879 3
1880 3
1881 1
1882 3
1883 1
1884 1
1885 1
1886 3
1887 1
1888 1
1889 1
1890 3
1892 1
1893 2
1894 2
1896 3
1897 4
1898 2
1899 16
1900 1
1901 4
1902 10
1903 5
1904 9
1905 5
1906 7
1907 1
1908 3
1909 2
1910 4
1911 7
1912 4
1913 5
1914 1
1915 4
1916 5
1917 4
1918 8
1919 3
1920 3
1921 6
1922 7
1923 4
1924 4
1925 8
1926 3
1927 3
1928 8
1929 9
1930 3
1931 8
1932 6
1933 8
1934 12
1935 15
1936 14
1937 14
1938 20
1939 13
1940 19
1941 16
1942 12
1943 13
1944 11
1945 7
1946 14
1947 21
1948 34
1949 27
1950 33
1951 44
1952 47
1953 45
1954 60
1955 54
1956 45
1957 50
1958 58
1959 70
1960 60
1961 76
1962 92
1963 72
1964 98
1965 108
1966 129
1967 161
1968 132
1969 164
1970 302
1971 174
1972 222
1973 246
1974 242
1975 272
1976 328
1977 351
1978 444
1979 447
1980 477
1981 563
1982 594
1983 660
1984 666
1985 792
1986 750
1987 900
1988 952
1989 1096
1990 1363
1991 1524
1992 1709
1993 2014
1994 2286
1995 2670
1996 2997
1997 3446
1998 3668
1999 4144
2000 5253
2001 5682
2002 7100
2003 7409
2004 8250
2005 9536
2006 10849
2007 11319
2008 12657
2009 14273
2010 16504
2011 18334
2012 19703
2013 21880
2014 23244
2015 24510
2016 24157
2017 25074
2018 27861
2019 30840
2020 37388
2021 41973
2022 40826
2023 44867
2024 14401
2025 1

[[1]][[5]]

1) Conserve restore and regenerate places of value to nature and people. – Monitoring
publication_year count
1835 1
1836 1
1837 1
1839 1
1840 1
1842 1
1848 1
1851 1
1855 2
1857 2
1858 1
1859 3
1866 1
1869 1
1870 1
1873 2
1877 1
1879 2
1889 1
1894 1
1896 3
1897 4
1898 4
1899 2
1900 2
1901 1
1902 3
1903 1
1904 1
1905 2
1906 2
1908 1
1909 1
1910 2
1911 4
1912 2
1913 1
1915 2
1916 2
1917 1
1918 1
1919 1
1920 3
1921 1
1922 2
1924 1
1925 6
1927 3
1928 2
1929 1
1930 1
1931 5
1932 2
1935 3
1936 2
1937 5
1938 3
1939 6
1940 9
1941 4
1942 4
1943 4
1944 3
1945 3
1946 3
1947 6
1948 7
1949 4
1950 8
1951 8
1952 12
1953 16
1954 20
1955 20
1956 10
1957 5
1958 9
1959 20
1960 18
1961 26
1962 33
1963 28
1964 36
1965 33
1966 69
1967 74
1968 75
1969 65
1970 170
1971 119
1972 151
1973 189
1974 168
1975 180
1976 222
1977 281
1978 300
1979 340
1980 347
1981 394
1982 387
1983 440
1984 492
1985 551
1986 618
1987 652
1988 721
1989 787
1990 921
1991 1027
1992 1136
1993 1261
1994 1477
1995 1880
1996 1980
1997 2718
1998 3089
1999 3487
2000 3982
2001 4493
2002 5054
2003 5594
2004 6098
2005 6708
2006 7352
2007 7607
2008 8034
2009 8753
2010 9825
2011 10818
2012 11369
2013 12497
2014 13548
2015 14385
2016 14944
2017 15021
2018 17254
2019 18833
2020 23260
2021 26469
2022 26606
2023 28529
2024 9102
2025 1

[[1]][[6]]

1) Conserve restore and regenerate places of value to nature and people. – Spatial planning
publication_year count
1837 1
1902 1
1911 1
1915 1
1919 1
1932 1
1934 1
1938 1
1941 2
1944 1
1945 1
1946 1
1948 1
1949 1
1954 1
1955 1
1956 1
1957 2
1958 1
1959 2
1962 4
1963 1
1964 2
1965 2
1966 3
1967 4
1968 6
1969 7
1970 11
1971 8
1972 8
1973 11
1974 9
1975 22
1976 19
1977 16
1978 17
1979 23
1980 18
1981 28
1982 16
1983 19
1984 15
1985 22
1986 15
1987 25
1988 12
1989 30
1990 45
1991 35
1992 44
1993 56
1994 66
1995 66
1996 81
1997 82
1998 101
1999 117
2000 144
2001 186
2002 186
2003 233
2004 242
2005 340
2006 317
2007 319
2008 402
2009 487
2010 593
2011 701
2012 761
2013 802
2014 858
2015 896
2016 837
2017 927
2018 1041
2019 1099
2020 1274
2021 1338
2022 1405
2023 1516
2024 470

[[1]][[7]]

1) Conserve restore and regenerate places of value to nature and people. – Right-based approaches
publication_year count
1896 1
1954 1
1955 1
1962 1
1964 1
1967 1
1969 1
1970 2
1971 1
1972 1
1975 1
1976 1
1977 1
1978 1
1979 1
1981 2
1982 1
1983 4
1984 3
1985 2
1986 3
1987 1
1988 7
1989 3
1990 3
1991 8
1992 11
1993 7
1994 5
1995 4
1996 7
1997 5
1998 13
1999 7
2000 16
2001 16
2002 26
2003 34
2004 34
2005 50
2006 48
2007 56
2008 76
2009 74
2010 81
2011 108
2012 105
2013 123
2014 129
2015 132
2016 174
2017 158
2018 180
2019 203
2020 246
2021 233
2022 222
2023 233
2024 48

[[2]] [[2]][[1]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Certification and standards
publication_year count
1828 1
1832 1
1834 1
1835 1
1837 2
1838 1
1843 2
1845 1
1846 1
1847 1
1851 3
1852 2
1853 1
1854 1
1855 1
1857 1
1860 1
1861 1
1862 1
1864 1
1865 2
1866 2
1867 1
1869 3
1870 3
1871 2
1872 3
1873 1
1874 6
1875 2
1877 5
1878 4
1879 3
1880 3
1881 4
1882 4
1883 1
1884 4
1885 7
1886 4
1887 6
1888 2
1889 6
1890 3
1892 6
1893 2
1894 2
1895 6
1896 4
1897 2
1898 4
1899 6
1900 14
1901 7
1902 6
1903 6
1904 6
1905 4
1906 8
1907 3
1908 4
1909 12
1910 6
1911 13
1912 11
1913 8
1914 11
1915 10
1916 14
1917 13
1918 12
1919 6
1920 15
1921 6
1922 7
1923 16
1924 22
1925 17
1926 20
1927 21
1928 16
1929 18
1930 17
1931 20
1932 19
1933 20
1934 30
1935 23
1936 21
1937 35
1938 32
1939 35
1940 30
1941 24
1942 20
1943 24
1944 26
1945 23
1946 32
1947 38
1948 48
1949 41
1950 47
1951 42
1952 59
1953 59
1954 58
1955 62
1956 71
1957 75
1958 77
1959 95
1960 91
1961 101
1962 130
1963 149
1964 164
1965 171
1966 222
1967 232
1968 261
1969 256
1970 348
1971 308
1972 325
1973 402
1974 394
1975 416
1976 460
1977 475
1978 554
1979 610
1980 666
1981 643
1982 712
1983 722
1984 762
1985 776
1986 906
1987 889
1988 1048
1989 1194
1990 1258
1991 1319
1992 1472
1993 1742
1994 1950
1995 2592
1996 2815
1997 4406
1998 5414
1999 5862
2000 6340
2001 7251
2002 8150
2003 8763
2004 9642
2005 10089
2006 10908
2007 11407
2008 11277
2009 11829
2010 12730
2011 13665
2012 14639
2013 16101
2014 17384
2015 18173
2016 18814
2017 18823
2018 20027
2019 22520
2020 26858
2021 28760
2022 27145
2023 27957
2024 7372

[[2]][[2]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Community-driven initiatives
publication_year count
1961 1
1975 1
1977 1
1980 1
1981 2
1983 1
1985 1
1987 1
1988 1
1989 1
1990 2
1991 1
1992 1
1993 1
1994 4
1995 2
1996 3
1997 4
1998 8
1999 6
2000 11
2001 10
2002 7
2003 8
2004 14
2005 18
2006 20
2007 21
2008 32
2009 43
2010 39
2011 59
2012 70
2013 89
2014 110
2015 109
2016 105
2017 117
2018 119
2019 124
2020 120
2021 139
2022 167
2023 155
2024 37

[[2]][[3]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Green infrastructure
publication_year count
1867 1
1877 1
1899 1
1907 1
1911 1
1913 1
1919 1
1928 1
1937 1
1939 1
1946 1
1948 1
1949 1
1951 1
1952 1
1955 1
1956 1
1957 2
1961 1
1962 1
1963 3
1964 1
1966 2
1968 1
1969 1
1970 9
1971 1
1972 7
1973 2
1974 7
1975 4
1976 3
1977 2
1978 7
1979 14
1980 4
1981 8
1982 6
1983 11
1984 12
1985 13
1986 21
1987 17
1988 12
1989 21
1990 21
1991 16
1992 30
1993 36
1994 38
1995 34
1996 58
1997 69
1998 67
1999 75
2000 93
2001 109
2002 141
2003 134
2004 161
2005 212
2006 221
2007 267
2008 301
2009 365
2010 494
2011 557
2012 568
2013 615
2014 701
2015 764
2016 821
2017 870
2018 1058
2019 1143
2020 1429
2021 1797
2022 1717
2023 1959
2024 640

[[2]][[4]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Green technology
publication_year count
1852 1
1876 2
1901 1
1914 1
1929 1
1930 1
1931 1
1934 1
1936 2
1937 2
1941 1
1942 1
1948 1
1949 1
1951 2
1953 1
1954 2
1955 1
1958 2
1959 1
1960 3
1961 2
1962 1
1963 3
1965 3
1966 4
1967 7
1968 3
1969 4
1970 7
1971 4
1972 7
1973 7
1974 3
1975 3
1976 11
1977 13
1978 20
1979 20
1980 18
1981 17
1982 11
1983 21
1984 13
1985 23
1986 10
1987 12
1988 13
1989 11
1990 11
1991 15
1992 15
1993 16
1994 25
1995 39
1996 38
1997 35
1998 37
1999 34
2000 59
2001 53
2002 89
2003 94
2004 110
2005 163
2006 197
2007 271
2008 503
2009 578
2010 737
2011 916
2012 1023
2013 1106
2014 1270
2015 1353
2016 1464
2017 1536
2018 1697
2019 1911
2020 2270
2021 2505
2022 2810
2023 3044
2024 1049

[[2]][[5]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Market-based mechanisms
publication_year count
1858 1
1895 1
1898 1
1903 1
1916 1
1927 1
1931 1
1932 1
1934 1
1938 1
1948 1
1950 2
1952 1
1957 1
1958 1
1959 3
1960 2
1962 2
1963 3
1964 1
1965 4
1966 2
1967 5
1968 4
1969 2
1970 2
1971 1
1972 3
1973 4
1974 3
1975 1
1976 4
1977 3
1978 3
1979 2
1980 1
1981 3
1982 2
1983 8
1984 2
1985 14
1986 2
1987 6
1988 9
1989 4
1990 5
1991 6
1992 9
1993 4
1994 14
1995 16
1996 16
1997 21
1998 14
1999 26
2000 41
2001 44
2002 44
2003 50
2004 87
2005 94
2006 106
2007 141
2008 253
2009 277
2010 344
2011 448
2012 510
2013 564
2014 544
2015 597
2016 568
2017 608
2018 630
2019 643
2020 691
2021 766
2022 797
2023 862
2024 272

[[2]][[6]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Market regulation
publication_year count
1796 1
1807 2
1833 1
1837 1
1849 2
1857 1
1870 1
1871 1
1872 1
1874 1
1875 1
1877 1
1881 1
1882 1
1883 3
1884 1
1888 1
1890 2
1892 2
1893 1
1895 2
1896 3
1898 1
1899 5
1901 1
1902 1
1903 1
1904 3
1905 1
1906 1
1907 4
1908 1
1909 2
1910 1
1911 2
1912 1
1915 3
1916 2
1917 6
1918 3
1919 1
1920 3
1921 1
1923 1
1925 7
1927 1
1928 1
1929 1
1930 1
1931 1
1932 2
1933 5
1934 1
1935 3
1936 3
1937 2
1938 7
1939 2
1941 3
1942 5
1943 2
1944 6
1945 1
1946 6
1947 6
1948 6
1949 3
1950 12
1951 5
1952 6
1953 5
1954 12
1955 10
1956 9
1957 12
1958 11
1959 16
1960 11
1961 20
1962 22
1963 16
1964 18
1965 23
1966 30
1967 36
1968 33
1969 39
1970 75
1971 58
1972 55
1973 59
1974 57
1975 53
1976 53
1977 66
1978 83
1979 93
1980 91
1981 101
1982 107
1983 101
1984 105
1985 124
1986 122
1987 127
1988 180
1989 184
1990 192
1991 232
1992 279
1993 321
1994 335
1995 405
1996 473
1997 572
1998 634
1999 699
2000 913
2001 1016
2002 1187
2003 1338
2004 1466
2005 1662
2006 1932
2007 2157
2008 2336
2009 2393
2010 2770
2011 2931
2012 3439
2013 3644
2014 3874
2015 4095
2016 4056
2017 4140
2018 4451
2019 4998
2020 6279
2021 6414
2022 5666
2023 6261
2024 1641

[[2]][[7]]

2) Drive systemic change in the sectors most responsible for biodiversity loss. – Sustainable production
publication_year count
1838 1
1849 1
1852 1
1853 1
1856 2
1857 1
1860 1
1863 1
1872 1
1876 1
1878 1
1881 1
1884 1
1886 1
1892 1
1896 1
1898 1
1899 1
1900 1
1901 1
1903 1
1908 3
1909 1
1910 1
1912 1
1913 1
1914 1
1915 2
1916 3
1918 2
1919 1
1920 2
1921 1
1923 1
1924 1
1926 1
1927 3
1928 3
1929 2
1931 2
1932 1
1933 3
1934 1
1935 2
1936 2
1937 3
1938 1
1939 1
1940 1
1941 2
1942 1
1943 2
1944 1
1945 2
1947 1
1948 3
1950 10
1951 3
1952 6
1953 5
1954 4
1955 6
1956 4
1957 2
1958 5
1959 6
1960 4
1961 6
1962 3
1963 6
1964 10
1965 9
1966 7
1967 3
1968 2
1969 5
1970 23
1971 5
1972 7
1973 5
1974 12
1975 8
1976 3
1977 11
1978 17
1979 11
1980 12
1981 12
1982 22
1983 30
1984 29
1985 20
1986 28
1987 41
1988 34
1989 47
1990 55
1991 58
1992 76
1993 110
1994 82
1995 123
1996 126
1997 135
1998 170
1999 161
2000 215
2001 286
2002 329
2003 327
2004 348
2005 384
2006 468
2007 504
2008 590
2009 762
2010 850
2011 877
2012 1019
2013 1033
2014 1239
2015 1349
2016 1279
2017 1445
2018 1802
2019 1883
2020 2335
2021 2860
2022 3034
2023 3345
2024 1098

[[3]] [[3]][[1]]

3) Transform economic systems to address power inequities and extractivist activities – Alternative business models
publication_year count
1870 1
1887 1
1909 1
1910 1
1927 1
1954 3
1958 1
1960 2
1962 1
1967 1
1968 2
1969 3
1971 2
1972 1
1973 2
1975 1
1979 1
1980 1
1981 2
1982 3
1983 3
1984 3
1985 4
1986 3
1987 3
1988 5
1989 7
1990 5
1991 3
1992 6
1993 5
1994 6
1995 9
1996 5
1997 12
1998 3
1999 14
2000 27
2001 31
2002 41
2003 71
2004 110
2005 142
2006 185
2007 205
2008 287
2009 327
2010 349
2011 385
2012 438
2013 520
2014 542
2015 638
2016 709
2017 739
2018 876
2019 1016
2020 1236
2021 1489
2022 1401
2023 1645
2024 547

[[3]][[2]]

3) Transform economic systems to address power inequities and extractivist activities – Alternative economic models
publication_year count
1500 1
1631 1
1743 1
1770 1
1790 1
1796 2
1797 1
1798 1
1799 1
1800 2
1806 1
1812 1
1814 4
1816 1
1817 2
1819 2
1820 1
1823 1
1824 1
1825 4
1827 1
1828 1
1830 1
1831 1
1832 3
1833 8
1834 6
1835 1
1836 1
1837 11
1838 4
1839 1
1840 4
1841 2
1842 1
1843 6
1844 3
1845 2
1846 4
1847 3
1848 5
1849 6
1850 4
1851 7
1852 4
1853 1
1854 4
1855 2
1856 3
1857 7
1858 4
1859 6
1860 6
1862 4
1863 1
1864 4
1865 6
1866 7
1867 3
1868 3
1869 4
1870 10
1871 10
1872 13
1873 14
1874 16
1875 8
1876 8
1877 7
1878 7
1879 15
1880 9
1881 10
1882 11
1883 9
1884 14
1885 12
1886 13
1887 13
1888 7
1889 8
1890 15
1891 11
1892 12
1893 11
1894 12
1895 9
1896 11
1897 10
1898 15
1899 20
1900 16
1901 17
1902 16
1903 16
1904 9
1905 8
1906 20
1907 16
1908 19
1909 21
1910 21
1911 17
1912 23
1913 19
1914 26
1915 15
1916 18
1917 24
1918 13
1919 21
1920 26
1921 19
1922 30
1923 25
1924 22
1925 29
1926 22
1927 23
1928 23
1929 27
1930 26
1931 31
1932 33
1933 36
1934 32
1935 30
1936 33
1937 47
1938 28
1939 31
1940 28
1941 30
1942 31
1943 44
1944 36
1945 37
1946 47
1947 33
1948 42
1949 54
1950 66
1951 57
1952 63
1953 74
1954 87
1955 76
1956 93
1957 80
1958 110
1959 113
1960 119
1961 131
1962 143
1963 162
1964 179
1965 183
1966 227
1967 201
1968 221
1969 253
1970 336
1971 256
1972 292
1973 302
1974 288
1975 304
1976 373
1977 408
1978 410
1979 527
1980 508
1981 575
1982 571
1983 652
1984 696
1985 692
1986 768
1987 792
1988 939
1989 1026
1990 1169
1991 1130
1992 1383
1993 1432
1994 1595
1995 2054
1996 2377
1997 3254
1998 3775
1999 4224
2000 4827
2001 5244
2002 5983
2003 6304
2004 6960
2005 7610
2006 8488
2007 8988
2008 9485
2009 10179
2010 11227
2011 12222
2012 13143
2013 14388
2014 14941
2015 16164
2016 17287
2017 17089
2018 17989
2019 20058
2020 24035
2021 26252
2022 25319
2023 25189
2024 6585

[[3]][[3]]

3) Transform economic systems to address power inequities and extractivist activities – Environmental governance
publication_year count
1989 1
1992 1
1993 1
1994 1
1997 2
2001 2
2002 2
2003 3
2004 1
2005 2
2006 2
2007 2
2008 4
2009 6
2010 14
2011 24
2012 25
2013 37
2014 55
2015 62
2016 60
2017 71
2018 63
2019 77
2020 75
2021 103
2022 73
2023 100
2024 18

[[3]][[4]]

3) Transform economic systems to address power inequities and extractivist activities – Supply chain governance and transparency
publication_year count
1828 1
1832 1
1834 1
1835 1
1837 2
1838 1
1843 2
1845 1
1847 1
1851 3
1852 2
1853 1
1854 1
1855 1
1857 1
1860 1
1862 1
1864 1
1865 2
1866 2
1867 1
1869 3
1870 3
1871 1
1872 3
1873 1
1874 6
1875 2
1877 5
1878 2
1879 2
1880 3
1881 4
1882 4
1883 1
1884 4
1885 7
1886 4
1887 6
1888 2
1889 6
1890 3
1892 6
1893 2
1894 2
1895 6
1896 4
1897 2
1898 4
1899 6
1900 14
1901 7
1902 6
1903 6
1904 6
1905 4
1906 8
1907 3
1908 4
1909 12
1910 6
1911 12
1912 11
1913 8
1914 11
1915 10
1916 14
1917 13
1918 12
1919 6
1920 15
1921 6
1922 6
1923 16
1924 22
1925 17
1926 20
1927 21
1928 17
1929 18
1930 17
1931 20
1932 18
1933 21
1934 30
1935 23
1936 21
1937 35
1938 29
1939 33
1940 30
1941 24
1942 20
1943 23
1944 26
1945 23
1946 32
1947 38
1948 49
1949 41
1950 46
1951 41
1952 58
1953 57
1954 56
1955 61
1956 71
1957 73
1958 76
1959 95
1960 89
1961 98
1962 129
1963 144
1964 156
1965 164
1966 212
1967 220
1968 252
1969 245
1970 326
1971 290
1972 306
1973 388
1974 367
1975 387
1976 424
1977 452
1978 512
1979 559
1980 611
1981 597
1982 650
1983 656
1984 699
1985 712
1986 831
1987 814
1988 957
1989 1090
1990 1147
1991 1188
1992 1356
1993 1570
1994 1768
1995 2398
1996 2580
1997 4168
1998 5084
1999 5486
2000 5917
2001 6778
2002 7537
2003 8170
2004 8955
2005 9320
2006 10014
2007 10426
2008 10302
2009 10675
2010 11461
2011 12320
2012 13160
2013 14343
2014 15624
2015 16254
2016 16836
2017 16724
2018 17908
2019 20006
2020 23527
2021 25134
2022 23885
2023 24415
2024 6361

[[3]][[5]]

3) Transform economic systems to address power inequities and extractivist activities – Sustainable consumption
publication_year count
1838 1
1846 1
1858 1
1872 1
1881 1
1882 1
1883 1
1887 1
1899 1
1900 1
1907 1
1910 1
1911 1
1912 1
1913 1
1914 2
1915 2
1918 1
1923 1
1924 1
1926 2
1928 1
1929 2
1930 3
1931 2
1933 2
1934 4
1935 1
1936 1
1937 2
1940 2
1943 2
1947 2
1948 1
1949 4
1950 1
1951 2
1952 1
1953 2
1954 3
1955 4
1956 4
1957 5
1958 1
1959 1
1960 6
1961 7
1962 6
1963 15
1964 13
1965 9
1966 9
1967 15
1968 15
1969 11
1970 21
1971 19
1972 32
1973 31
1974 41
1975 36
1976 40
1977 43
1978 38
1979 48
1980 58
1981 75
1982 60
1983 57
1984 69
1985 70
1986 66
1987 77
1988 97
1989 136
1990 122
1991 136
1992 206
1993 221
1994 234
1995 282
1996 302
1997 349
1998 484
1999 529
2000 570
2001 643
2002 782
2003 836
2004 899
2005 981
2006 1077
2007 1105
2008 1207
2009 1334
2010 1654
2011 1789
2012 1865
2013 2090
2014 2324
2015 2411
2016 2586
2017 2858
2018 3124
2019 3767
2020 4752
2021 5301
2022 5811
2023 6542
2024 2120
2025 1

[[3]][[6]]

3) Transform economic systems to address power inequities and extractivist activities – Sustainability and well-being measures
publication_year count
1916 1
1931 1
1956 1
1959 1
1964 1
1965 1
1966 1
1968 1
1970 1
1972 1
1973 1
1976 2
1978 1
1980 1
1982 3
1983 1
1984 1
1985 1
1987 2
1988 2
1990 1
1991 1
1993 3
1994 2
1995 5
1996 6
1997 8
1998 8
1999 16
2000 14
2001 15
2002 25
2003 19
2004 37
2005 44
2006 55
2007 79
2008 100
2009 118
2010 143
2011 157
2012 150
2013 179
2014 161
2015 171
2016 145
2017 176
2018 225
2019 234
2020 254
2021 333
2022 380
2023 427
2024 148

[[4]] [[4]][[1]]

4) Transform governance systems to be inclusive accountable and adaptive. – Anti-corruption measures
publication_year count
1997 1
1998 1
1999 2
2001 1
2004 2
2006 5
2009 3
2010 1
2011 3
2012 3
2013 7
2014 8
2015 8
2016 4
2017 9
2018 9
2019 8
2020 8
2021 8
2022 4
2023 7
2024 1

[[4]][[2]]

4) Transform governance systems to be inclusive accountable and adaptive. – Customary governance
publication_year count
1949 1
1962 1
1965 2
1969 1
1970 1
1971 2
1972 1
1973 1
1975 1
1976 1
1977 1
1979 6
1982 2
1983 1
1985 2
1986 2
1987 1
1988 3
1989 3
1990 4
1991 3
1992 8
1993 7
1994 4
1995 1
1996 12
1997 9
1998 11
1999 10
2000 12
2001 19
2002 18
2003 18
2004 16
2005 36
2006 27
2007 41
2008 30
2009 46
2010 39
2011 56
2012 48
2013 64
2014 76
2015 68
2016 76
2017 84
2018 97
2019 100
2020 127
2021 151
2022 127
2023 151
2024 35

[[4]][[3]]

4) Transform governance systems to be inclusive accountable and adaptive. – Engagement and participation
publication_year count
1868 1
1870 1
1874 1
1881 1
1896 2
1899 1
1902 1
1903 2
1904 1
1909 1
1910 1
1912 2
1914 1
1915 2
1916 2
1917 1
1918 1
1920 1
1921 1
1923 4
1925 1
1928 2
1929 3
1931 1
1932 1
1933 2
1934 2
1935 1
1936 2
1937 5
1938 4
1939 8
1940 3
1941 5
1942 3
1943 3
1944 1
1945 3
1946 3
1947 3
1948 10
1949 3
1950 10
1951 4
1952 3
1953 14
1954 15
1955 9
1956 10
1957 17
1958 14
1959 14
1960 17
1961 10
1962 20
1963 26
1964 26
1965 19
1966 32
1967 35
1968 33
1969 56
1970 103
1971 57
1972 56
1973 63
1974 80
1975 75
1976 89
1977 95
1978 106
1979 100
1980 117
1981 127
1982 134
1983 127
1984 138
1985 175
1986 137
1987 166
1988 174
1989 229
1990 233
1991 295
1992 278
1993 335
1994 403
1995 536
1996 529
1997 733
1998 869
1999 920
2000 1130
2001 1186
2002 1337
2003 1432
2004 1666
2005 1889
2006 2193
2007 2278
2008 2598
2009 2819
2010 3250
2011 3468
2012 3961
2013 4283
2014 4732
2015 5008
2016 5164
2017 5270
2018 5421
2019 6061
2020 7209
2021 7958
2022 7423
2023 8286
2024 2138

[[4]][[4]]

4) Transform governance systems to be inclusive accountable and adaptive. – Governance and democratic processes
publication_year count
1976 1
1982 1
1984 1
1988 1
1990 1
1993 5
1994 4
1995 5
1996 6
1997 2
1998 1
1999 3
2000 5
2001 8
2002 5
2003 13
2004 10
2005 18
2006 10
2007 14
2008 18
2009 29
2010 23
2011 32
2012 26
2013 36
2014 27
2015 39
2016 59
2017 56
2018 48
2019 52
2020 55
2021 73
2022 55
2023 87
2024 37

[[4]][[5]]

4) Transform governance systems to be inclusive accountable and adaptive. – International agreements
x
NA

[[4]][[6]]

4) Transform governance systems to be inclusive accountable and adaptive. – Legislative reforms
publication_year count
1949 1
1956 1
1964 1
1966 1
1970 4
1971 3
1972 1
1973 3
1974 6
1975 3
1978 2
1979 2
1980 2
1981 3
1982 2
1983 2
1984 1
1985 8
1986 5
1987 5
1988 4
1989 6
1990 12
1991 7
1992 13
1993 15
1994 15
1995 22
1996 21
1997 24
1998 31
1999 35
2000 41
2001 48
2002 46
2003 49
2004 60
2005 66
2006 74
2007 83
2008 88
2009 89
2010 109
2011 93
2012 116
2013 149
2014 149
2015 140
2016 131
2017 123
2018 151
2019 134
2020 135
2021 141
2022 107
2023 125
2024 21

[[5]] [[5]][[1]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Behavioral change
publication_year count
1902 1
1925 1
1934 1
1937 2
1938 2
1940 2
1942 3
1944 1
1945 1
1946 1
1947 1
1950 1
1951 1
1953 1
1954 4
1956 3
1957 4
1958 3
1959 1
1960 3
1961 5
1962 5
1963 3
1964 5
1965 5
1966 5
1967 5
1968 9
1969 7
1970 15
1971 18
1972 19
1973 19
1974 17
1975 16
1976 18
1977 28
1978 35
1979 19
1980 27
1981 25
1982 32
1983 36
1984 39
1985 44
1986 33
1987 48
1988 39
1989 47
1990 52
1991 64
1992 71
1993 77
1994 88
1995 83
1996 110
1997 111
1998 116
1999 118
2000 177
2001 183
2002 195
2003 239
2004 268
2005 314
2006 346
2007 399
2008 422
2009 512
2010 691
2011 699
2012 828
2013 972
2014 1091
2015 1127
2016 1261
2017 1248
2018 1397
2019 1583
2020 2041
2021 2242
2022 2209
2023 2299
2024 636

[[5]][[2]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Capacity building
publication_year count
1917 1
1951 1
1952 2
1956 1
1959 1
1961 1
1969 1
1970 5
1974 1
1975 2
1976 1
1978 2
1980 7
1981 2
1982 2
1983 1
1984 2
1985 3
1986 1
1987 3
1988 1
1989 3
1990 8
1991 7
1992 8
1993 18
1994 13
1995 25
1996 25
1997 33
1998 35
1999 47
2000 63
2001 75
2002 82
2003 101
2004 130
2005 153
2006 176
2007 212
2008 240
2009 251
2010 334
2011 364
2012 420
2013 465
2014 481
2015 486
2016 570
2017 547
2018 608
2019 700
2020 725
2021 863
2022 868
2023 1061
2024 343

[[5]][[3]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Cultural change
publication_year count
1830 1
1902 1
1906 1
1930 1
1936 1
1939 1
1945 1
1947 1
1953 1
1955 2
1956 1
1957 3
1959 2
1960 3
1961 1
1962 2
1963 1
1965 3
1966 2
1968 2
1969 2
1970 5
1971 5
1972 11
1973 9
1974 5
1975 5
1976 6
1977 9
1978 10
1979 15
1980 24
1981 17
1982 16
1983 17
1984 14
1985 26
1986 23
1987 18
1988 30
1989 44
1990 39
1991 47
1992 47
1993 59
1994 84
1995 87
1996 106
1997 106
1998 137
1999 146
2000 194
2001 198
2002 244
2003 215
2004 297
2005 330
2006 386
2007 365
2008 403
2009 424
2010 546
2011 499
2012 569
2013 631
2014 694
2015 743
2016 778
2017 790
2018 803
2019 984
2020 1289
2021 1313
2022 1170
2023 1555
2024 401

[[5]][[4]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Education
publication_year count
1800 1
1802 1
1809 1
1830 1
1851 1
1854 1
1868 2
1869 1
1870 2
1871 1
1872 1
1874 1
1875 1
1876 2
1877 3
1878 1
1880 1
1883 1
1886 2
1887 1
1888 1
1889 1
1890 2
1896 4
1897 2
1898 3
1899 1
1901 4
1902 4
1903 5
1904 4
1905 3
1907 2
1908 3
1909 1
1910 3
1911 1
1912 5
1913 1
1914 1
1915 1
1916 3
1917 1
1918 3
1919 2
1920 3
1921 3
1922 1
1923 2
1925 1
1926 1
1927 3
1928 4
1929 2
1930 3
1931 4
1933 5
1934 8
1935 4
1936 4
1937 5
1938 4
1939 7
1940 7
1941 3
1942 6
1943 3
1944 7
1945 9
1946 6
1947 3
1948 6
1949 9
1950 3
1951 6
1952 3
1953 13
1954 8
1955 6
1956 4
1957 8
1958 10
1959 9
1960 14
1961 17
1962 20
1963 11
1964 16
1965 21
1966 22
1967 23
1968 26
1969 55
1970 64
1971 37
1972 43
1973 57
1974 53
1975 50
1976 63
1977 73
1978 69
1979 74
1980 89
1981 95
1982 109
1983 106
1984 105
1985 143
1986 150
1987 154
1988 145
1989 218
1990 228
1991 214
1992 274
1993 294
1994 373
1995 382
1996 508
1997 566
1998 597
1999 628
2000 851
2001 909
2002 990
2003 1009
2004 1266
2005 1403
2006 1645
2007 1746
2008 1990
2009 2137
2010 2348
2011 2629
2012 2842
2013 3180
2014 3245
2015 3345
2016 3539
2017 3460
2018 3537
2019 3871
2020 5177
2021 4773
2022 4611
2023 5068
2024 1259

[[5]][[5]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Holistic approaches to sustainability
publication_year count
1918 1
1921 1
1926 1
1938 2
1939 2
1942 1
1949 1
1950 1
1952 4
1953 2
1954 1
1956 2
1957 1
1959 1
1960 1
1961 1
1962 1
1963 1
1964 2
1965 6
1966 4
1967 4
1968 1
1969 4
1970 1
1971 4
1972 4
1973 8
1974 2
1975 5
1976 4
1977 7
1978 10
1979 4
1980 12
1981 8
1982 11
1983 6
1984 12
1985 18
1986 23
1987 14
1988 31
1989 31
1990 27
1991 27
1992 39
1993 35
1994 36
1995 56
1996 46
1997 73
1998 52
1999 74
2000 78
2001 101
2002 88
2003 114
2004 130
2005 166
2006 183
2007 212
2008 243
2009 214
2010 339
2011 336
2012 364
2013 400
2014 470
2015 505
2016 563
2017 673
2018 721
2019 762
2020 1056
2021 1262
2022 1183
2023 1517
2024 374

[[5]][[6]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Network and collaboration
publication_year count
1780 1
1797 1
1799 1
1800 1
1805 1
1808 3
1811 1
1821 1
1822 1
1824 1
1825 1
1826 1
1830 1
1831 2
1832 2
1833 2
1834 1
1835 2
1836 1
1837 5
1838 1
1840 2
1841 1
1842 1
1844 1
1845 1
1848 2
1849 4
1850 2
1851 3
1852 2
1853 2
1855 1
1856 1
1857 1
1859 3
1860 1
1861 1
1862 2
1863 5
1864 3
1865 1
1866 2
1867 1
1868 3
1869 2
1870 9
1871 4
1872 2
1873 3
1874 7
1875 3
1876 4
1877 5
1878 5
1879 6
1880 1
1881 3
1882 4
1883 5
1884 8
1885 6
1886 8
1887 2
1888 4
1889 2
1890 7
1891 6
1892 5
1893 7
1894 2
1895 3
1896 5
1897 6
1898 3
1899 8
1900 10
1901 7
1902 6
1903 4
1904 5
1905 4
1906 4
1907 3
1908 8
1909 8
1910 6
1911 17
1912 3
1913 8
1914 10
1915 7
1916 12
1917 11
1918 7
1919 9
1920 9
1921 8
1922 15
1923 7
1924 9
1925 10
1926 13
1927 22
1928 8
1929 5
1930 10
1931 9
1932 11
1933 14
1934 21
1935 25
1936 12
1937 18
1938 12
1939 25
1940 16
1941 13
1942 20
1943 20
1944 17
1945 16
1946 21
1947 17
1948 23
1949 30
1950 24
1951 32
1952 31
1953 35
1954 38
1955 26
1956 30
1957 30
1958 44
1959 61
1960 52
1961 61
1962 73
1963 78
1964 77
1965 82
1966 111
1967 94
1968 109
1969 147
1970 210
1971 146
1972 143
1973 159
1974 180
1975 186
1976 225
1977 221
1978 225
1979 283
1980 293
1981 325
1982 341
1983 333
1984 361
1985 371
1986 427
1987 424
1988 496
1989 544
1990 650
1991 633
1992 754
1993 895
1994 1005
1995 1311
1996 1516
1997 2246
1998 2655
1999 3004
2000 3506
2001 3915
2002 4537
2003 4874
2004 5251
2005 5754
2006 6482
2007 6784
2008 7359
2009 8015
2010 9012
2011 9993
2012 10818
2013 12323
2014 13065
2015 14361
2016 15001
2017 15625
2018 16559
2019 18711
2020 22464
2021 24479
2022 23766
2023 26541
2024 9190
2025 2

[[5]][[7]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Knowledge co-creation
publication_year count
1887 1
1890 1
1910 1
1951 1
1952 1
1960 1
1961 1
1962 1
1966 1
1968 2
1969 1
1970 3
1972 1
1975 1
1976 3
1977 1
1978 2
1979 4
1980 2
1981 1
1982 1
1983 3
1984 3
1985 4
1986 8
1987 10
1988 10
1989 6
1990 9
1991 18
1992 14
1993 17
1994 26
1995 34
1996 45
1997 34
1998 42
1999 40
2000 67
2001 54
2002 83
2003 86
2004 108
2005 132
2006 143
2007 171
2008 157
2009 239
2010 215
2011 262
2012 272
2013 355
2014 371
2015 352
2016 420
2017 391
2018 448
2019 529
2020 663
2021 828
2022 816
2023 922
2024 258

[[5]][[8]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Psychological change
publication_year count
1500 2
1631 1
1670 1
1688 1
1692 1
1724 1
1743 1
1762 1
1770 2
1775 1
1777 1
1780 1
1789 1
1790 2
1792 1
1794 1
1795 2
1796 3
1797 1
1798 1
1799 2
1800 3
1801 2
1803 1
1804 1
1805 1
1806 1
1807 2
1808 5
1809 2
1810 1
1811 2
1812 3
1814 2
1816 2
1817 3
1818 1
1819 5
1820 2
1821 5
1822 2
1823 1
1824 5
1825 5
1826 3
1827 2
1828 3
1829 4
1830 4
1831 8
1832 7
1833 20
1834 9
1835 6
1836 10
1837 30
1838 9
1839 5
1840 9
1841 5
1842 10
1843 24
1844 6
1845 9
1846 9
1847 4
1848 11
1849 14
1850 10
1851 27
1852 14
1853 8
1854 14
1855 13
1856 14
1857 17
1858 17
1859 19
1860 18
1861 12
1862 13
1863 15
1864 15
1865 17
1866 20
1867 11
1868 22
1869 21
1870 50
1871 50
1872 45
1873 47
1874 60
1875 40
1876 55
1877 50
1878 49
1879 44
1880 57
1881 57
1882 47
1883 52
1884 54
1885 70
1886 51
1887 52
1888 56
1889 56
1890 59
1891 50
1892 44
1893 52
1894 53
1895 52
1896 37
1897 45
1898 54
1899 76
1900 70
1901 67
1902 57
1903 56
1904 40
1905 65
1906 81
1907 69
1908 61
1909 85
1910 90
1911 90
1912 97
1913 77
1914 102
1915 80
1916 75
1917 86
1918 91
1919 83
1920 123
1921 104
1922 124
1923 109
1924 123
1925 144
1926 118
1927 136
1928 135
1929 136
1930 150
1931 140
1932 158
1933 185
1934 198
1935 203
1936 192
1937 193
1938 196
1939 197
1940 206
1941 161
1942 183
1943 176
1944 161
1945 151
1946 192
1947 213
1948 236
1949 237
1950 258
1951 276
1952 282
1953 316
1954 360
1955 368
1956 472
1957 415
1958 458
1959 569
1960 570
1961 639
1962 677
1963 823
1964 789
1965 894
1966 1037
1967 1075
1968 1214
1969 1293
1970 1634
1971 1344
1972 1509
1973 1615
1974 1730
1975 1837
1976 2041
1977 2162
1978 2262
1979 2518
1980 2656
1981 2732
1982 2902
1983 3097
1984 3236
1985 3400
1986 3599
1987 3726
1988 4252
1989 4598
1990 5079
1991 5258
1992 5986
1993 6419
1994 7199
1995 8687
1996 9688
1997 12074
1998 14007
1999 15258
2000 17354
2001 19033
2002 21540
2003 22692
2004 25744
2005 28049
2006 30538
2007 32151
2008 33865
2009 36785
2010 40453
2011 43769
2012 47446
2013 51426
2014 54379
2015 57511
2016 58263
2017 58430
2018 63097
2019 69659
2020 82472
2021 87967
2022 83564
2023 84757
2024 21728
2025 1

[[5]][[9]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Spiritual and cultural practices
publication_year count
1762 1
1797 1
1800 1
1801 1
1803 1
1809 1
1810 1
1811 1
1814 1
1818 1
1819 2
1822 1
1824 1
1825 2
1826 3
1827 2
1830 2
1831 5
1832 3
1833 5
1834 5
1835 2
1836 2
1837 11
1838 4
1840 2
1841 2
1842 4
1843 7
1844 3
1845 6
1846 1
1848 2
1849 6
1850 4
1851 6
1852 2
1853 1
1854 2
1855 3
1856 3
1857 4
1858 4
1859 9
1860 1
1861 4
1862 2
1863 5
1864 3
1865 6
1866 5
1867 3
1868 2
1869 12
1870 23
1871 15
1872 8
1873 10
1874 21
1875 8
1876 16
1877 8
1878 10
1879 8
1880 16
1881 17
1882 10
1883 9
1884 17
1885 17
1886 18
1887 18
1888 13
1889 14
1890 20
1891 12
1892 14
1893 12
1894 10
1895 14
1896 9
1897 6
1898 18
1899 22
1900 21
1901 15
1902 18
1903 11
1904 12
1905 15
1906 13
1907 18
1908 22
1909 24
1910 30
1911 38
1912 34
1913 25
1914 38
1915 30
1916 21
1917 25
1918 20
1919 30
1920 22
1921 24
1922 38
1923 42
1924 35
1925 48
1926 34
1927 51
1928 43
1929 36
1930 50
1931 58
1932 41
1933 53
1934 59
1935 62
1936 47
1937 58
1938 60
1939 50
1940 53
1941 61
1942 46
1943 47
1944 47
1945 34
1946 53
1947 57
1948 72
1949 82
1950 81
1951 94
1952 103
1953 101
1954 115
1955 119
1956 149
1957 129
1958 157
1959 170
1960 216
1961 216
1962 244
1963 250
1964 272
1965 311
1966 395
1967 364
1968 395
1969 454
1970 556
1971 507
1972 534
1973 601
1974 618
1975 596
1976 697
1977 758
1978 817
1979 853
1980 926
1981 973
1982 1055
1983 1156
1984 1161
1985 1286
1986 1317
1987 1410
1988 1541
1989 1755
1990 1866
1991 2018
1992 2155
1993 2286
1994 2545
1995 3325
1996 3637
1997 5443
1998 6509
1999 7018
2000 7547
2001 8298
2002 8803
2003 9334
2004 10281
2005 10497
2006 11020
2007 11591
2008 11668
2009 12137
2010 12977
2011 14184
2012 15117
2013 16726
2014 18054
2015 19609
2016 20574
2017 20336
2018 22479
2019 24216
2020 28488
2021 29788
2022 28826
2023 29185
2024 8569

[[5]][[10]]

5) Promote narratives and norms of unity in diversity in support of global sustainability goals. – Values for sustainability
publication_year count
1688 1
1743 1
1762 1
1770 1
1780 1
1798 1
1800 1
1801 1
1805 1
1808 2
1809 2
1812 1
1817 3
1819 1
1823 1
1824 2
1827 1
1828 3
1829 1
1831 2
1832 2
1833 5
1834 4
1835 1
1836 5
1837 7
1838 5
1839 2
1840 4
1841 2
1842 3
1843 6
1844 1
1845 3
1846 2
1848 4
1849 6
1850 4
1851 3
1852 3
1853 5
1854 5
1855 1
1856 7
1857 5
1858 5
1859 5
1860 4
1861 6
1862 2
1863 5
1864 6
1865 6
1866 5
1867 3
1868 7
1869 4
1870 12
1871 14
1872 8
1873 8
1874 20
1875 15
1876 14
1877 20
1878 17
1879 15
1880 24
1881 23
1882 13
1883 17
1884 19
1885 14
1886 17
1887 17
1888 16
1889 20
1890 17
1891 10
1892 21
1893 15
1894 20
1895 13
1896 16
1897 14
1898 22
1899 23
1900 33
1901 22
1902 28
1903 21
1904 22
1905 23
1906 33
1907 25
1908 27
1909 39
1910 44
1911 38
1912 41
1913 30
1914 43
1915 39
1916 31
1917 34
1918 45
1919 38
1920 46
1921 46
1922 57
1923 58
1924 70
1925 86
1926 63
1927 72
1928 53
1929 69
1930 92
1931 82
1932 75
1933 83
1934 93
1935 106
1936 105
1937 97
1938 95
1939 106
1940 109
1941 84
1942 77
1943 68
1944 74
1945 81
1946 103
1947 109
1948 132
1949 132
1950 147
1951 141
1952 159
1953 181
1954 188
1955 201
1956 226
1957 248
1958 259
1959 286
1960 363
1961 407
1962 425
1963 487
1964 552
1965 587
1966 670
1967 694
1968 781
1969 875
1970 1150
1971 900
1972 1061
1973 1145
1974 1127
1975 1289
1976 1464
1977 1518
1978 1543
1979 1793
1980 1802
1981 1875
1982 1965
1983 2100
1984 2197
1985 2322
1986 2493
1987 2591
1988 2839
1989 3096
1990 3439
1991 3534
1992 3936
1993 4315
1994 4744
1995 5587
1996 6164
1997 7702
1998 8675
1999 9601
2000 10941
2001 11899
2002 13766
2003 14896
2004 16553
2005 18128
2006 20057
2007 21645
2008 23164
2009 25291
2010 28300
2011 31177
2012 34324
2013 37770
2014 40762
2015 43317
2016 43888
2017 45103
2018 49722
2019 56274
2020 66766
2021 75542
2022 74339
2023 80300
2024 23986
2025 2

Reuse

Citation

BibTeX citation:
@report{krug2024,
  author = {Krug, Rainer M.},
  title = {Data {Management} {Report} {Transformative} {Change}
    {Assessment} {Corpus} - {SOD}},
  date = {2024-04-19},
  doi = {10.5281/zenodo.10251349},
  langid = {en},
  abstract = {The literature search for the assessment corpus was
    conducted using search terms provided by the experts and refined in
    co-operation with the Knowldge and Data task force. The search was
    conducted using {[}OpenAlex{]}(https://openalex.org), scripted from
    {[}R{]}(https://cran.r-project.org) to use the
    {[}API{]}(https://docs.openalex.org). Search terms for the following
    searches were defined: **Transformative Change**, **Nature /
    Environment** and **additional search terms for individual chapters
    and sub-chapters** To assess the quality of the corpus, sets of
    key-papers were selected by the experts to verify if these are in
    the corpus. These key-papers were selected per chapter / sub-chapter
    to ensure that the corpus is representative of each chapter.}
}
For attribution, please cite this work as:
Krug, Rainer M. 2024. “Data Management Report Transformative Change Assessment Corpus - SOD.” Report Transformative Change Assessment Corpus. https://doi.org/10.5281/zenodo.10251349.